我想知道是否有人有幸获得一个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标记的类型继承。考虑使用DataContractAttribute或SerializableAttribute标记基类型‘DataContractAttribute’或SerializableAttribute,或者从派生类型中删除它们。
有什么建议吗?
发布于 2011-04-19 10:26:10
解决你的问题
实现自定义IDynamicMetaObjectProvider
发布于 2011-02-18 15:28:28
你能用像Dictionary<TKey, TValue>这样的东西来实现这一点吗?
我正试图解决一个类似的问题。我的问题是,我有DTO在客户端和服务器之间传输数据。但是,您应该始终拥有细粒度和扁平的DTO。
例如,如果客户端希望获得客户的名称和ID,并且对任何其他内容都不感兴趣,那么理想情况下,您应该创建一个只包含这2个属性的DTO。如果要为所有方法传输相同的CustomerDTO,则会产生许多性能影响。你可能会转移很多多余的字段。
https://stackoverflow.com/questions/2671851
复制相似问题