我有这些课程:
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>();
}
当我尝试通过我的网络服务转移CustomGroup
时,我收到此错误:
远程服务器返回错误:NotFound
当C#尝试通过StringField
传输CustomField
时,序列化失败。
我做错了什么?
马克·格拉维尔告诉我这样做,我理解解决方案,但有些事情是错误的,没有效果,导致同样的错误! ,帮助!!
[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
}
}
答案 0 :(得分:1)
List<CustomField>
会序列化并反序列化为CustomField[]
,不是吗?
答案 1 :(得分:1)
使用
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 >();
}
代替
答案 2 :(得分:1)
如果要将子类作为xml发送,则需要[XmlInclude]
:
[XmlInclude(typeof(StringCustomField))]
public abstract class CustomField
{...}
您可以为模型中的任何其他子类添加多个[XmlInclude(...)]
标记。
答案 3 :(得分:0)
如果我理解正确,你应该 1.将您的Web服务连接到您的应用程序 2.使用WS的命名空间,因此将从Proxy使用所有类 即使您在双方使用相同的程序集,我也不认为远程网络服务能够正确理解本地课程