config で既知の型を指定しようとしていますが、それが 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>
「プロパティ 'type' の値が無効です。エラー: 型 System.Object は構成で宣言された型として使用できません。」というメッセージとともに ConfigurationErrorsException が発生します。
構成を介してこれを機能させる方法はありますか?