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
{}