格式化字符串作为数据类型

时间:2014-07-21 06:09:45

标签: c# types format

我有一些特定ID的格式,我宁愿为它们提供自定义数据类型,而不是将它们存储为字符串。
如何在C#中完成? 这首先是一个好主意吗?

下面的例子应该解释我的意思:

Id格式(D代表数字,C代表字母字符):CCDDDD

public ItemId id { get; set; }
...  
public class ItemId {
// somehow declare the format here
}

2 个答案:

答案 0 :(得分:1)

您可以在字符串ID周围包装一个类,该类将输入字符串作为构造函数参数。这样,您还可以在类中放置方法以提供额外的功能等,并始终在一个位置具有格式。简单的例子:

   public class ItemId
   {
        private string _id;

        public string ID
        {
            get { return _value; }
            set
            {
                //do some formatting here
                _id= value;
            }
        }

        public ItemId(string id)
        {
            ID = id
        }

        public override string ToString()
        {
            //do some extra formatting here if needed
            return Value;
        }
   }

因为您只能通过公共设置器操作真实ID,所以您可以将格式和验证逻辑放在一个位置。希望这对你有所帮助。我认为这是一个好主意,因为类ItemId比字符串更有意义,而且将来更容易扩展或更改功能。

例如,您可以使用正则表达式检查输入,如果输入与您的格式不匹配,则抛出您自己的异常。这会在运行时为您提供有意义的信息您还可以将xml注释添加到公共设置器中,因此,如果您或任何人使用它,则可以清楚ID应该是什么样的。

答案 1 :(得分:0)

您也可以通过实施扩展来实现,我更愿意覆盖ToString方法。

例如

public static class Extension
{
     public static string MyFormat(this string str)
     {
         //do sth with your string
         return str;
     }
}

您可以像

一样使用此扩展程序
string abc = "";
abc.MyFormat();