tags:

views:

201

answers:

1

I was wondering if anyone has had any luck getting a DynamicObject to serialize and work with WCF?

Here’s my little test:

[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);

The error I get is:

System.Runtime.Serialization.InvalidDataContractException was unhandled Message=Type 'ElasticTest1.MyDynamicObject' cannot inherit from a type that is not marked with DataContractAttribute or SerializableAttribute. Consider marking the base type 'System.Dynamic.DynamicObject' with DataContractAttribute or SerializableAttribute, or removing them from the derived type.

Any suggestions?

A: 

I'm curious as to why you chose to use dynamic objects to serialize out to SL client. What do you objects represent: data from a database, or something altogether different? What makes your data dynamic?

Andrew Miadowicz
The system is used for an entity based game engine. More info: http://forums.tigsource.com/index.php?topic=10112.0
rboarman