This question already has answers here:
Type.GetType(“namespace.a.b.ClassName”) returns null
(16个回答)
5年前关闭。
我有一个Web应用程序,该应用程序使用用户控件动态创建网页。
在我的代码中,我具有以下内容:
返回的“typeName”(示例)为:
用户控件的 namespace 如下:
我遇到的问题是Type.GetType(typeName)返回null。我在这里想念什么? 使用程序集限定名称代替 在适当的程序集上调用
如果您有一种简单的方式来获取相关程序集(例如,通过
(16个回答)
5年前关闭。
我有一个Web应用程序,该应用程序使用用户控件动态创建网页。
在我的代码中,我具有以下内容:
private void Render_Modules()
{
foreach (OnlineSystemPageCustom.OnlineSystemPageHdr.OnlineSystemPageModule item in custompage.Header.Modules)
{
if (item.ModuleCustomOrder != 99 && !item.ModuleOptional)
{
string typeName = item.ModuleInternetFile;
Type child = Type.GetType(typeName);
webonlinecustombase ctl = (webonlinecustombase)Page.LoadControl("../IPAM_Controls/webtemplatecontrols/" + child.Name.ToString() + ".ascx");
ctl.Event = Event;
ctl.custompage = custompage;
ctl.custommodule = item;
this.eventprogrammodules.Controls.Add(ctl);
}
}
}
返回的“typeName”(示例)为:
IPAMIntranet.IPAM_Controls.webtemplatecontrols.eventorgcommittee
用户控件的 namespace 如下:
namespace IPAMIntranet.IPAM_Controls
我遇到的问题是Type.GetType(typeName)返回null。我在这里想念什么?
最佳答案
当您未在字符串中指定程序集名称时, Type.GetType(string)
仅在当前执行的程序集和mscorlib
中查找。
选项:
Assembly.GetType(name)
而不是如果您有一种简单的方式来获取相关程序集(例如,通过
typeof(SomeKnownType).Assembly
),那么第二个选项可能会更简单。关于c# - Type.GetType()返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8716414/
10-12 19:07