我的应用程序中有很多常量字符串值,我想在C#中使用强类型对象来代码重用和可读性。我希望能够像这样引用字符串值:
Category.MyCategory //returns a string value ie “My Category”
Category.MyCategory.Type.Private //returns a string value ie “private”
Category.MyCategory.Type.Shared //returns a string value ie “shared”
我已经开始实现以下类,每个类都包含一个公共字符串值字段列表,其中包含公开属性的公共属性。
类别,MyCategory,类型
但是我已经知道这不是可行的方法,所以可以就这一点提出一些建议。
这方面的一个示例是我使用Syndication类向原子提要添加类别。我正在动态创建此Feed中的项目,因此需要使用如图所示的表示法。
item.Categories.Add( new SyndicationCategory
{
Scheme = Category.PersonType,
Label="My Category",
Name=Category.MyCategory.Type.Private
});
答案 0 :(得分:1)
保持你的字符串常量接近你需要它们的地方,IMO有一个只声明常量的类是一个OO反模式
答案 1 :(得分:1)
为什么不简单地将它们实现为具有重写的ToString实现的类?
public class MyCategory
{
private readonly MyType type;
public MyCategory()
{
this.type = new MyType();
}
public MyType Type
{
get { return this.type; }
}
// etc.
public override string ToString()
{
return "My Category";
}
}
public class MyType
{
public override string ToString()
{
return "My Type";
}
// more properties here...
}
但是,出于一般目的,请考虑字符串本身是否不代表更好地建模为完整对象的概念。
答案 2 :(得分:0)
我完全同意罗布。如果你仍然想要一个“字符串包”,你可以尝试使用嵌套类,如下所示。我真的不喜欢它,但它确实有效。
public class Category
{
public class MyCategory
{
public const string Name = "My Category";
public class Type
{
public const string Private = "private";
public const string Shared = "shared";
}
}
}