我有一个只包含许多公共常量字符串的类。作为开发人员,我只希望在我的项目中最多引用一次。有没有办法在consts或其他一些机制上放置一个属性,如果找到每个const的多个引用,会导致编译器生成错误?
我当然可以在每个相应的消费类中使用私有功能,但我希望它们都在一个文件中以便于维护,这似乎是一个有趣的问题。
答案 0 :(得分:1)
我实现这个错误模式的唯一解决方案是保留私有const字段的逻辑并将它们存储在包含每个相关类的partial classes声明的单个文件中。
示例:
public partial class MyClass1
{
private const string myClass1Const1 = "myClass1Const1";
private const string myClass1Const2 = "myClass1Const2";
}
public partial class MyClass2
{
private const string myClass2Const1 = "myClass2Const1";
private const string myClass2Const2 = "myClass2Const2";
}
答案 1 :(得分:0)
对常量使用不超过一次的要求导致常量的路径应该是私有的,并且只在需要该值的类或方法中定义。
可能还有其他方法可以完成常量的单个源文件的行为,它们只能使用一次,但这里有一个选项。虽然,我真的不会推荐它;如果你必须使用它。
public static class Consts
{
private const string _name = "Foo";
private static int _nameCount = 0;
public static string Name
{
get
{
if( _nameCount++ > 1 )
{
throw new Exception( "Cannot use Name more than once." );
}
return _name;
}
}
}