簡體   English   中英

為什么我不能通過Web服務發送自定義類?

[英]Why can't I send my custom class through my webservice?

我有這些課:

public abstract class CustomField
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public FieldType Type { get; set; } 

    public enum FieldType
    { 
        String = 0,
        Integer = 1,
        Boolean = 2,
        List = 3
    }
}

public class StringCustomField:CustomField
{
    public String Value { get; set; }
    public Int32 MinLenght { get; set; }
    public Int32 MaxLenght { get; set; }

    public StringCustomField()
    {
        this.Type = FieldType.String;
    }
}

public class CustomGroup
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public List<CustomField> FieldList = new List<CustomField>();
}

當我嘗試通過Web服務傳輸CustomGroup ,出現以下錯誤:

遠程服務器返回錯誤:NotFound

當C#嘗試通過CustomField傳輸StringField時,序列化失敗。

我究竟做錯了什么?

馬克·格雷夫(Marc Gravel)告訴我要這樣做,我知道解決方案,但是有些事情是錯誤的,沒有影響,是同樣的錯誤! , 救命!!

[XmlInclude(typeof(StringCustomField))]
[XmlInclude(typeof(IntegerCustomField))]
[XmlInclude(typeof(BooleanCustomField))]
[XmlInclude(typeof(ListCustomField))]
public abstract class CustomField
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public FieldType Type { get; set; } 

    public enum FieldType
    { 
        String = 0,
        Integer = 1,
        Boolean = 2,
        List = 3
    }
}

如果您使用的是Web服務, List<CustomField>將序列化並反序列化為CustomField[] ,不是嗎?

采用

public class CustomGroup
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public List<CustomField> FieldList = new List< StringCustomField >();

}

代替

如果將子類作為xml發送,則需要[XmlInclude]

[XmlInclude(typeof(StringCustomField))]
public abstract class CustomField
{...}

您可以為模型中的任何其他子類添加多個[XmlInclude(...)]標記。

如果我理解正確,則應該1.將Web服務連接到應用程序2.使用WS的名稱空間,因此所有類都將從Proxy中使用,我認為本地類不會被Proxy理解。遠程網絡正確服務,即使您在雙方上使用相同的程序集

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM