Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“动态对象设置”;“枚举”;价值_C#_C# 4.0_Dynamic - Fatal编程技术网

C# C“动态对象设置”;“枚举”;价值

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

我有一个动态对象(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?

如果
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");