Je me demandais si quelqu'un avait eu de la chance pour obtenir un objet DynamicObject pour sérialiser et travailler avec WCF?Prise en charge de DynamicObject et WCF
Voici mon petit 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);
L'erreur que je reçois est:
System.Runtime.Serialization.InvalidDataContractException a été unhandled Message = Type 'ElasticTest1.MyDynamicObject' ne peut pas hériter d'un type qui n'est pas marqué avec DataContractAttribute ou SerializableAttribute. Envisagez de marquer le type de base 'System.Dynamic.DynamicObject' avec DataContractAttribute ou SerializableAttribute ou de les supprimer du type dérivé.
Des suggestions?
Le message d'erreur indique que vous ne pouvez pas le faire sauf si vous modifiez System.Dynamic.DynamicObject que vous ne pouvez pas parce que cela fait partie du .NET Framework. Donc tu ne peux pas faire ça. Qu'est-ce que vous essayez d'atteindre, peut-être qu'il y a une façon différente d'atteindre le même but? – dtb
Bien sûr, bien que vous ne puissiez pas changer DynamicObject, il est open source (http://dlr.codeplex.com/), donc vous pouvez le copier et le modifier. –
J'essaye d'envoyer un DynamicObject sur le fil à un client SL 4. – rboarman