所以如果将变量的字符串名称传递给方法,我知道要使用哪个变量.
在下面的示例中,我需要帮助的区域是PrintVar(字符串)...将字符串参数转换为变量...以便它分别打印出"here be variable 1"和"here be variable 2". .谢谢!
class ReflectionTest
{
class MyObj
{
private string myvar;
public MyObj(string input)
{ this.myvar = input; }
public override string ToString()
{ return ("here be " + myvar); }
}
class MyClass
{
private MyObj var1;
private MyObj var2;
public MyClass()
{
var1 = new MyObj("variable 1");
var2 = new MyObj("variable 2");
}
public void PrintVar(string theVariable)
{
Console.WriteLine(theVariable);
}
}
static void Main()
{
MyClass test = new MyClass();
test.PrintVar("var1");
test.PrintVar("var2");
}
}
Run Code Online (Sandbox Code Playgroud)
如果你需要按名称获取东西,那么我个人首先在内部实现中使用字典,即
private readonly Dictionary<string,MyObj> fields =new Dictionary<string,MyObj>();
public MyClass()
{
fields["var1"] = new MyObj("variable 1");
fields["var2"] = new MyObj("variable 2");
}
public void PrintVar(string fieldName)
{
Console.WriteLine(fields[fieldName]);
}
Run Code Online (Sandbox Code Playgroud)
另一个选项是reflection(GetType().GetFields()):
public void PrintVar(string fieldName)
{
Console.WriteLine(GetType().GetField(fieldName,
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |