加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在课堂上代表类型安全的物业包的最好方式是什么?

发布时间:2020-12-15 17:45:45 所属栏目:百科 来源:网络整理
导读:我有一个第三方应用程序,为对象提供了许多“属性”,它们是简单的(字符串)键和值对.值类型可以是字符串,DateTime,Int32或Int64. 我需要创建我自己的类来表示这个对象,方便的方式.我正在创建一个向客户端提供此对象的WCF服务,所以我需要它非常简单和干净. 属性
我有一个第三方应用程序,为对象提供了许多“属性”,它们是简单的(字符串)键和值对.值类型可以是字符串,DateTime,Int32或Int64.

我需要创建我自己的类来表示这个对象,方便的方式.我正在创建一个向客户端提供此对象的WCF服务,所以我需要它非常简单和干净.

属性的键将作为客户端的枚举显示(隐藏第三方应用程序的特定密钥字符串的信息).但是,我不知道如何表示值.以下是一些选项:

选项1:每个属性值有不同的集合,看起来很丑,但是很容易让客户使用

public class MyObject
{
    public Dictionary<MyTextAttributeKeysEnum,string> TextAttributes { get; set; }
    public Dictionary<MyDateAttributeKeysEnum,DateTime> DateAttributes { get; set; }
    public Dictionary<MyNumAttributeKeysEnum,long> NumericAttributes { get; set; }

    public string Name { get; set; }
    public string Id{ get; set; }

选项2:将所有属性转换为字符串

public class MyObject
{
    public Dictionary<MyAttributeKeysEnum,string> MyAttributes { get; set; }

    public string Name { get; set; }
    public string Id{ get; set; }

选择3:将它们保持为对象,让客户打扰铸造和转换

public class MyObject
{
    public Dictionary<MyAttributeKeysEnum,object> MyAttributes { get; set; }

    public string Name { get; set; }
    public string Id{ get; set; }

解决方法

使用几个字典只是看起来不太好:)但可能会在某些情况下工作.

如果你绝对确定这个字符串对于所有的字符串都是足够的 – 用字符串去.但是如果一些其他代码需要解析它 – 这将是昂贵的.

如果你想要一个非常简单的直接解决方案 – 只需要与对象.即使它会为价值类型引入拳击/拆箱(如果您不操作数千个对象,请忘记它),并且您将丢失关于值的类型信息,此解决方案仍然可以正常工作.

还可以考虑为值引入中间类.就像是

public Dictionary<MyAttributeKeysEnum,PropertyBagValue> MyAttributes { get; set; }

public class PropertyBagValue
{
    public object AsObject { get; set; }
    public string AsString { get; set; }
    public int AsInt { get; set; }
    // ...
}

在内部你可以将你的值存储在一个原始类型的变量中(int在一个int变量中,一个字符串变量中的字符串等),即每个类型都有一个单独的变量),然后可以避免类型转换.还可以将您的字典包装在另一个类中,添加一些有用的访问器,并使其看起来更好.我不知道这适合你的基础设施.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读