[英]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.