DynamicObject和WCF支持

rbo*_*man 9 c# dynamic-language-runtime c#-4.0

我想知道是否有人有幸获得一个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);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

System.Runtime.Serialization.InvalidDataContractException未处理Message = Type'ElasticTest1.MyDynamicObject'无法从未使用DataContractAttribute或SerializableAttribute标记的类型继承.请考虑使用DataContractAttribute或SerializableAttribute标记基本类型"System.Dynamic.DynamicObject",或者从派生类型中删除它们.

有什么建议?

poc*_*sov 10

解决您的问题

实现自定义 IDynamicMetaObjectProvider