在运行时强制转换为特定类型

本文关键字:类型 转换 运行时 | 更新日期: 2023-09-27 18:29:10

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

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

Customer test = (Customer)entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);

我需要GetProperty()的Customer as String并不是直接写的,它来自一个变量,它总是变化的。我只是写了"客户",以便于理解。

我现在想要的是相同的,但没有告诉你,这是一个客户或任何类型。

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); 之类的东西

希望有人能为这个找到一个小的解决方案

在运行时强制转换为特定类型

CustomerOrder都继承自System.Object,因此您只需使用

Object test = entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);

如果需要在运行时执行所有检查,可以将其强制转换为dynamic。这样你就失去了所有的智能和编译时检查,但我认为这正是你想要的。

dynamic test = entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);

如果您的目的是在运行时创建某个类的对象,

Type assemblyType = Type.GetType("yournamespace.class,yournamespace");
YourClass objYourClass=(YourClass)Activator.CreateInstance(assemblyType);

命名空间的相应dll必须位于bin文件夹中。