C#:通过反思获得价值

5 c# reflection

我想知道是否可以这样做:

class brand
{
  string name;
}

class car
{
   string carname;
   brand carbrand;
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个这样的字符串和一个类型为car的实例化对象:

 car carobject = new car();
 string brandNameOfCar = DoSomeMagicalReflectionStuff(car, "car.brand.name");
Run Code Online (Sandbox Code Playgroud)

"DoSomeMagicalReflectionStuff"方法如何?

甚至可以做以下事情:

 car carobject = new car();
 string brandNameOfCar = DoSomeMagicalReflectionStuff(car, "car.brand.name.ToFormatedString()");
Run Code Online (Sandbox Code Playgroud)

谢谢!

Phi*_*ert 1

我通常不会尝试插入我所参与的产品,但这是一个需要Vici Parser(.NET 的开源表达式解析器)解决的完美问题:

var parser = new CSharpParser();
var context = new CSharpContext();

context["car"] = carobject;

string brandNameOfCar = 
          parser.Evaluate<string>("car.brand.name.ToFormatedString()", context);
Run Code Online (Sandbox Code Playgroud)