Interface DataContractSerializer。通过接口序列化类
我有一个实现某些接口的类:Interface DataContractSerializer。通过接口序列化类,interface,datacontractserializer,Interface,Datacontractserializer,我有一个实现某些接口的类: [DataContract] public class ScriptState : IScriptState { <...> } 由于DataContractSerializer是使用接口IScriptState类型实例化的,但对象的实际类型是ScriptState,这会导致错误,所以不需要ScriptState类型 标准的解决方法应该是将knowntype ScriptState添加到接口IScriptState,但我显然无法做到这一点: [Kn
[DataContract]
public class ScriptState : IScriptState
{
<...>
}
由于DataContractSerializer是使用接口IScriptState类型实例化的,但对象的实际类型是ScriptState,这会导致错误,所以不需要ScriptState类型
标准的解决方法应该是将knowntype ScriptState添加到接口IScriptState,但我显然无法做到这一点:
[KnownType(typeof(Scriptstate))]
IScriptState
{}
因为具有接口的程序集没有对具有类的程序集的引用
还有别的解决办法吗?我想我找到了解决办法。在helper类中,使用
obj.GetType()
代替typeof(T)
:
DataContractSerializer ser=newDataContractSerializer(obj.GetType())代码>
IScriptstate ss = ServiceLocator.Resolve<IScriptState>();
Serializer.Serialize(ss);
[KnownType(typeof(Scriptstate))]
IScriptState
{}