C#动态对象 - 设置"枚举"值

Bra*_*Nut 4 c# dynamic c#-4.0

我有一个动态对象(C#4.0),因为我想动态设置属性的枚举值,但我没有该类型的程序集引用.关于如何做到这一点的任何想法/是否可以这样做?

dynamic vehicle = myObject;
vehicle.AddTires(); // working
vehicle.ConfigureEngine(); //working
vehicle.seat="Leather";//working
//Enum needs to be set for the Make
vehicle.Make = Manufacturer.Toyota; // how to do this?
Run Code Online (Sandbox Code Playgroud)

Tim*_* S. 12

如果c.Make总是有一个值(例如,它的类型是Manufacturer,Manufacturer?或者在设置它之前根本不存在该属性):

c.Make = Enum.Parse(c.Make.GetType(), "Toyota");
Run Code Online (Sandbox Code Playgroud)

如果这对你不起作用,使用这种方法,你需要以某种方式获得对类型的引用Manufacturer.这可能有多复杂取决于您的动态类型的设置方式.Manufacturer?您可能需要采用的另一种方法(例如,如果它可能为null)是使用反射来获取Make属性以查找它的类型.