我有一些特定ID的格式,我宁愿为它们提供自定义数据类型,而不是将它们存储为字符串。
如何在C#中完成?
这首先是一个好主意吗?
下面的例子应该解释我的意思:
Id格式(D代表数字,C代表字母字符):CCDDDD
public ItemId id { get; set; }
...
public class ItemId {
// somehow declare the format here
}
答案 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();