问题描述
string MyVar1 = "bilah bilah";
dosometing(MyVar1);
void dosometing(object MyObject)
{
string VarName = nameof(MyObject); // it givess : "MyObject"
}
但是我期望“ MyVar1”有办法吗?使用动态?还是参考?
解决方法
那是不可能的。但是您可以执行以下操作:
string MyVar1 = "bilah bilah";
dosometing(MyVar1,nameof(MyVar1));
void dosometing(string MyString,string VarName)
{
// MyString holds the value
// VarName holds the variable name
}
,
也许此信息对您有用。
由于您希望更改value
的{{1}}和name
,因此可以在属性的property
内移动方法dosomething
。
(注意:我假设您实际上是在使用属性,而不是问题中显示的局部变量,并且您的问题只是简化了)
是这样的:
setter
属性public class Foo
{
private string _myVar1;
public string MyVar1
{
get => _myVar1;
set
{
_myVar1 = value;
DoSomething(value);
}
}
private void DoSomething(string value,[CallerMemberName]string propertyName = "")
{
Console.WriteLine(value);
Console.WriteLine(propertyName);
}
}
需要使用CallerMemberName
更多信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute
在此处查看实际操作:https://dotnetfiddle.net/YvqqdP