首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamicObject和WCF支持

DynamicObject和WCF支持
EN

Stack Overflow用户
提问于 2010-04-20 00:51:19
回答 2查看 5K关注 0票数 9

我想知道是否有人有幸获得一个DynamicObject来序列化和使用WCF?

这是我的小测验:

代码语言:javascript
复制
[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,或者从派生类型中删除它们。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 10:26:10

解决你的问题

实现自定义IDynamicMetaObjectProvider

票数 10
EN

Stack Overflow用户

发布于 2011-02-18 15:28:28

你能用像Dictionary<TKey, TValue>这样的东西来实现这一点吗?

我正试图解决一个类似的问题。我的问题是,我有DTO在客户端和服务器之间传输数据。但是,您应该始终拥有细粒度和扁平的DTO。

例如,如果客户端希望获得客户的名称和ID,并且对任何其他内容都不感兴趣,那么理想情况下,您应该创建一个只包含这2个属性的DTO。如果要为所有方法传输相同的CustomerDTO,则会产生许多性能影响。你可能会转移很多多余的字段。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2671851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档