【发布时间】:2012-11-13 16:15:52
【问题描述】:
我从不同来源获取 json 格式的数据,并尝试将它们映射到实现相同接口的对象。
json 变量在 feed 1 中看起来像这样:
{"identifier": 232, "type": "Feed1"}
我正在使用这个对象对其进行序列化:
[DataContract]
public class Class A : InterfaceA
{
[DataMember(Name = "identifier")]
public int Id{ get; set; }
[DataMember(Name = "type")]
public FeedType Type { get; set; }
}
[DataContract]
public enum FeedType
{
[EnumMember(Value = "Feed1")]
FeedA,
[EnumMember(Value = "Feed2")]
FeedB,
[EnumMember(Value = "Feed3")]
FeedC
}
界面如下:
public interface InterfaceA
{
int Id {get;set;}
FeedType Type{get;set;}
}
在提要 2 中,对象如下所示:
{"identifier": 232, "feedType": "A"}
如何创建另一个实现相同接口并返回相同枚举的对象?如何设置 DataContract?
编辑:
我是这样序列化的
var serializer = new DataContractJsonSerializer(ClassA);
var ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
var serializedObject = serializer.ReadObject(ms);
【问题讨论】:
-
首先,您不能创建接口的实例,因此您需要创建实际类的实例,您是否考虑过使用泛型方法?
-
你能把你实际序列化 Json 的代码也包括进来吗?
-
@Liam 我确实考虑过泛型类型。但我希望它是相同类型的枚举。
标签: c# .net datacontractjsonserializer