如何在c#中获取字段声明中的字段名



我有什么:

我声明了大量的字段,其中大部分都有自己的名字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;

相关内容

  • 没有找到相关文章

最新更新