反射、泛型和多个程序集

发布于 2024-10-30 08:27:44 字数 255 浏览 1 评论 0原文

我正在尝试解决这个问题:

Type.GetType("Class1'[[Class2]]")

其中 Class1Class2 处于不同的位置组件。

我可以解析程序集并找到 Class1 类型以及 Class2 类型,但是如何获取 Class1 类型?

I'm trying to solve this:

Type.GetType("Class1'[[Class2]]")

where Class1 and Class2 are in different assemblies.

I can parse the assemblies and find the Class1 type as well as the Class2 type, but how do I get to the Class1<Class2> type?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初雪 2024-11-06 08:27:44

如果你能找到类型,你需要做的是:

Type class1Type = assembly1.GetType("Class1"); //or however you are able to get this type
Type class2Type = assembly2.GetType("Class2"); //or however you are able to get this type
Type genericType = class1Type.MakeGenericType(class2Type);

genericType 就像有 typeof(Class1)

if you can find the types all you need to is:

Type class1Type = assembly1.GetType("Class1"); //or however you are able to get this type
Type class2Type = assembly2.GetType("Class2"); //or however you are able to get this type
Type genericType = class1Type.MakeGenericType(class2Type);

genericType will be like having typeof(Class1<Class2>)

凡尘雨 2024-11-06 08:27:44

我认为,它应该看起来像这样:

Type.GetType("Class1`1[Class2]");

注意:我将撇号从 ' 更改为 ` 并添加了通用参数的数量。

如果这还不够,请尝试指定包括命名空间和程序集的类:

Type.GetType("Namespace1.Class1`1[[Namespace2.Class2, Assembly2]], Assembly1");

I think, it should look like this:

Type.GetType("Class1`1[Class2]");

Note: I changed the apostroph from ' to ` and added the number of generic arguments.

If this is not enough, try specifying the classes including namespace and assembly:

Type.GetType("Namespace1.Class1`1[[Namespace2.Class2, Assembly2]], Assembly1");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文