考虑以下代码行:
classA<classB> C;
Run Code Online (Sandbox Code Playgroud)
我想通过使用System.Reflection在运行时创建C的实例.为此,我需要在运行时知道classA和classB的类型.
我知道如何获得classB的类型
Type classBType = AssemblyContaingClassB.GetType("namespace.classB");
Run Code Online (Sandbox Code Playgroud)
Q1>如何使用此classBType获取classA的类型?
Q2>我明白要在运行时创建实例,我们调用以下代码行:
object C = Activator.CreateInstance(TypeName);
Run Code Online (Sandbox Code Playgroud)
要创建C的实例,代码上面应使用什么TypeName?将足以创建此实例的classA类型
如果这个问题太基础,请提前致谢并道歉.我是c#的新手.
编辑:
问题是固定的.从pswg的答案来看,使用泛型参数获取类的类型存在问题.可以在此处找到有关如何获取通用参数类型的解决方案.之后我就做了pswg的回答建议及其工作.
您可以MakeGenericType在open-generic classA<>类型上使用该方法:
Type classBType = ... get from somewhere at runtime
Type classAType = typeof(classA<>).MakeGenericType(classBType);
object classAInstance = Activator.CreateInstance(classAType);
Run Code Online (Sandbox Code Playgroud)
在MakeGenericType将关闭classA<>通用,并有可能实例.
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |