在运行时强制转换为特定类型
本文关键字:类型 转换 运行时 | 更新日期: 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);
之类的东西
希望有人能为这个找到一个小的解决方案
Customer
和Order
都继承自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文件夹中。