我有什么:
我声明了大量的字段,其中大部分都有自己的名字string价值。就像
string ErrorCode0001 = "ErrorCode0001-C";
string ErrorCode0002 = "ErrorCode0002";
string ErrorCode0003 = "ErrorCode0003";
string ErrorCode0004 = "ErrorCode0004";
string ErrorCode0005 = "ErrorCode0005";
string ErrorCode0006 = "ErrorCode0001";
现在,如果你注意上面的代码,我在ErrorCode0006
中有一个错误,很难注意到。
上面的错误是因为我复制粘贴了第一个字段声明,然后只修改了后缀数字,忽略了最后一个字段中的数字。
我想要什么:
我想写一些像
string ErrorCode0001 = $"{nameof(self)}-C";
string ErrorCode0002 = $"{nameof(self)}";
string ErrorCode0003 = $"{nameof(self)}";
string ErrorCode0004 = $"{nameof(self)}";
string ErrorCode0005 = $"{nameof(self)}";
string ErrorCode0006 = $"{nameof(self)}";
,但我不知道如何做到这一点在c#.
希望在这里看到一些聪明的建议。
实现此目的的一种方法是使用CallerMemberName属性。
您可以定义如下方法:
private static String GetName([CallerMemberName] string fieldName = "")
=> fieldName;
当无参数调用时,它将返回调用成员的名称(在您的示例中是字段!)。
你可以这样使用:
public static readonly string KPT1_0001 = $"{GetName()}-C";
public static readonly string KPT1_0002 = $"{GetName()}";
public static readonly string KPT1_0003 = $"{GetName()}";
public static readonly string KPT1_0004 = $"{GetName()}";
public static readonly string KPT1_0005 = $"{GetName()}";
public static readonly string KPT1_0006 = $"{GetName()}";
private static String GetName([CallerMemberName] string fieldName = "")
=> fieldName;