我需要在运行时强制转换为特定类型。
它是如何工作的,看起来像 - 现在:
Customer test = (Customer)entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);
Customer as String,我需要GetProperty()
,不是直接写 ,它来自变量,它总是在变化。出于理解目的,我只是写了“客户”。
我现在想要的是相同的,但不说明,它是客户或任何类型。
Placeholder test = (Placeholder)entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);
因为它也可能是这样的:
Order test = (Order)entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);
我尝试了businnesObject = Activator.CreateInstance(type);
希望有人为此提供一个小解决方案
答案 0 :(得分:4)
Customer
和Order
都继承自System.Object
,因此您只需使用
Object test = entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);
答案 1 :(得分:3)
如果您需要在运行时进行所有检查,可以将其强制转换为dynamic
。有了这个,你就失去了所有的智能感知和编译时间检查,但我认为这就是你想要的。
dynamic test = entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);
答案 2 :(得分:1)
如果您的目的是在运行时创建某个类的对象,
Type assemblyType = Type.GetType("yournamespace.class,yournamespace");
YourClass objYourClass=(YourClass)Activator.CreateInstance(assemblyType);
命名空间的相应dll必须位于bin文件夹中。