限制对项目中公共字段的引用

时间:2014-02-06 15:09:08

标签: c#

我有一个只包含许多公共常量字符串的类。作为开发人员,我只希望在我的项目中最多引用一次。有没有办法在consts或其他一些机制上放置一个属性,如果找到每个const的多个引用,会导致编译器生成错误?

我当然可以在每个相应的消费类中使用私有功能,但我希望它们都在一个文件中以便于维护,这似乎是一个有趣的问题。

2 个答案:

答案 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;
        }
    }
}