Я задавался вопросом, была ли у кого-либо удача, заставляя 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);
Ошибка, которую я получаю:
Система. Время выполнения. Сериализация. InvalidDataContractException был необработанным Message=Type 'ElasticTest1. MyDynamicObject' не может наследоваться типу, который не отмечен с DataContractAttribute или SerializableAttribute. Считайте маркировку базового типа 'Системой. Динамичный. DynamicObject' с DataContractAttribute или SerializableAttribute или удалением их от производного типа.
Какие-либо предложения?