我正在尝试在我的配置中指定一个已知类型,但我遇到了它派生自 Object 的问题。我可以让它通过属性指定已知类型。但在这种情况下,我需要让它从配置中工作。
这是一个例子。以下工作正常:
[ServiceContract]
[ServiceKnownType(typeof(MyData))]
public interface IContract
{
[OperationContract]
void Send(object data);
}
[DataContract]
public class MyData
{
[DataMember]
public string Message { get; set; }
}
但是,如果我删除 ServiceKnownType 属性并将以下内容放入配置中:
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<knownType type="WpfApplication1.MyData, WpfApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
我收到 ConfigurationErrorsException 消息“属性‘类型’的值无效。错误是:类型 System.Object 不能用作配置中的声明类型。”
有没有办法通过配置来完成这项工作?