1
序列化類我有一個實現一些接口類:DataContractSerializer。通過接口
[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
{}
因爲組件,接口與類沒有提及組裝。
有沒有另一種解決方案?