C# C“动态对象设置”;“枚举”;价值
我有一个动态对象(C#4.0),因为我想动态设置属性的枚举值,但我没有该类型的程序集引用。你知道怎么做吗C# C“动态对象设置”;“枚举”;价值,c#,c#-4.0,dynamic,C#,C# 4.0,Dynamic,我有一个动态对象(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.Toyo
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?
如果
c.Make
始终有一个值(例如,其类型为Manufacturer
,而不是Manufacturer?
,或者在设置之前属性根本不存在):
如果这对您不起作用,要使用此方法,您需要以某种方式获得对类型制造商的引用。这可能有多复杂取决于动态类型的设置方式。另一种方法(例如,如果它是Manufacturer?
并且可能为null),您可能需要使用反射来获取Make
属性,以找到它是什么类型。Enum.Parse()
的返回类型为object
,您可以将返回的对象强制转换为dynamic
,以强制它查看实际的运行时类型
vehicle.Make = (dynamic)Enum.Parse(vehicle.Make.GetType(), "Toyota");
嗯,什么类型的装配参考?我相信他的意思是,他没有提到制造厂,我没有提到“制造商”,我刚刚试过这个,这似乎是我能让它工作的唯一方法。
vehicle.Make = (dynamic)Enum.Parse(vehicle.Make.GetType(), "Toyota");