【发布时间】:2016-05-19 15:15:48
【问题描述】:
我在 C# 中创建了一个外部 DDL 以在另一个项目中使用。 在其中一个 DLL 函数中,我有以下代码行:
Assembly assembly = typeof(Base).Assembly;
Type type = assembly.GetType(NameSpace + "." + ObjectType);
其中“Base”是一个虚拟类(在 DLL 中定义),“ObjectType”(类型字符串)是其他项目中任何类的类名,“NameSpace”(类型字符串)是其他项目的命名空间也是。 当我尝试在传递“NameSpace”和“ObjectType”参数时调用 DLL 函数时,我将 Type(即类型)设为 null。
我的想法是创建一个 DLL 并在所有项目中使用,而不是每次创建新项目时都复制文件。
非常感谢任何帮助或建议。
【问题讨论】:
-
"我的想法是创建一个 DLL 并在所有项目中使用,而不是每次创建新项目时都复制文件。"因此,只需 reference 来自其他项目的 DLL。如果您可以在编译时引用 DLL,则不需要通过反射加载类型。它会让你的生活更加更加艰难。
-
我们需要更多信息才能回答这个问题...指出对象类型的声明方式,以及您为 NameSpace 和 ObjectType 传递的内容。
-
@Sinatr 使用
Type.GetType时确实如此。Assembly.GetType不需要指定的程序集(因为您正在调用已经知道该详细信息的Assembly实例。 -
要对此进行调试,请查看调试器中
Namespace和ObjectType的值,并查看调试器中程序集中可用的类型(查看assembly.GetTypes())。跨度> -
@Sinatr 没问题 - 只是不想让 OP 朝着错误的方向前进 :)
标签: c# dll namespaces .net-assembly