DynamicObject をシリアル化して WCF で動作させることができた人がいるかどうか疑問に思っていましたか?
これが私の小さなテストです:
[DataContract]
class MyDynamicObject : DynamicObject
{
[DataMember]
private Dictionary<string, object> _attributes =
new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
string key = binder.Name;
result = null;
if (_attributes.ContainsKey(key))
result = _attributes[key];
return true;
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_attributes.Add(binder.Name, value);
return true;
}
}
var dy = new MyDynamicObject();
var ser = new DataContractSerializer(typeof(MyDynamicObject));
var mem = new MemoryStream();
ser.WriteObject(mem, dy);
私が得るエラーは次のとおりです。
System.Runtime.Serialization.InvalidDataContractException が処理されませんでした Message=Type 'ElasticTest1.MyDynamicObject' は、DataContractAttribute または SerializableAttribute でマークされていない型から継承できません。基本型 'System.Dynamic.DynamicObject' を DataContractAttribute または SerializableAttribute でマークするか、派生型からそれらを削除することを検討してください。
助言がありますか?