在运行时转换为特定类型

时间:2012-03-27 07:13:01

标签: c# types casting

我需要在运行时强制转换为特定类型。

它是如何工作的,看起来像 - 现在:

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);

之类的内容

希望有人为此提供一个小解决方案

3 个答案:

答案 0 :(得分:4)

CustomerOrder都继承自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文件夹中。