【发布时间】:2012-03-11 19:43:11
【问题描述】:
我的类实现了一些接口:
[DataContract]
public class ScriptState : IScriptState
{
<...>
}
我有简单的辅助类
public class Serializer
{
string Serialize<T>(T obj)
{
MemoryStream ms = new MemoryStream();
DataContractSerializer ser = new DataContractSerializer(typeof(T));
ser.WriteObject(ms, obj);
<...>
}
}
问题是我有松散耦合的应用程序,我得到的 ScriptState 对象是这样的:
IScriptstate ss = ServiceLocator.Resolve<IScriptState>();
即变量具有接口类型,并且正在被序列化程序处理:
Serializer.Serialize(ss);
由于这个DataContracrSerializer是用IScriptState接口类型实例化的,但是对象的真正类型是ScriptState,这会导致错误,所以不需要ScriptState类型。
标准的解决方法应该是将 knowntype ScriptState 添加到接口 IScriptState,但我显然不能这样做:
[KnownType(typeof(Scriptstate))]
IScriptState
{}
因为带有接口的程序集没有引用带有类的程序集。
还有其他解决方案吗??
【问题讨论】:
标签: interface datacontractserializer