为什么要打字.GetType返回null,并在siteity中返回teleerik类型
本文关键字:返回 并在 siteity 类型 teleerik null GetType 为什么 | 更新日期: 2023-09-27 18:18:04
我已经为我的Sitefinity网站的后端设置了一个小部件,它有三个文本框和一个按钮。目标是在数据库中创建一个新列:
protected void btnAddClick(object sender, EventArgs e)
{
Type TelerikType = Type.GetType(txtTelType.Text);
Type ColumnType = Type.GetType(txtColType.Text);
string error = "";
if (TelerikType == null)
{
error = "Telerik Type is invalid";
}
if (ColumnType == null)
{
error = "Column Type is invalid";
}
if (error.Length == 0)
{
App.WorkWith()
.DynamicData()
.Type(TelerikType)
.Field()
.TryCreateNew(txtName.Text, ColumnType)
.SaveChanges(true);
error = "Added column successfully";
txtColType.Text = txtName.Text = txtTelType.Text = "";
}
literalErrorText.Text = string.Format(literalErrorText.Text, error);
}
我有两个问题:
当我在文本框中输入Telerik.Sitefinity.Pages.Model.PageNode时,Type.GetType(txtTelType.Text)返回null
如果我用typeof(PageNode)替换该部分,我得到"指定类型"Telerik.Sitefinity.Pages.Model。PageNode'不是动态类型。"
我希望有人可能有一些见解,为什么这些东西不能正常工作,或者可能有一个更好的方法来处理这个问题?作为参考,我的目标(至少现在)是添加一个引用PageNode的动态列,这样我就可以指定一个ShowInLeftNavigation布尔值和一个ShowInRightNavigation布尔值。谢谢你提供的任何帮助。
请仔细阅读文档:
typeName类型:System。字符串类型的程序集限定名来获得。看到AssemblyQualifiedName。如果类型在当前执行程序集或在Mscorlib.dll中,提供由其命名空间限定的类型名称。
因此,如果类型不是基本的。net类型之一,或者在当前执行的程序集中,您必须告诉GetType也要查找哪个程序集。我不知道Telerik控件在什么程序集中,但看起来您必须将程序集添加到类型名称中,例如:
TopNamespace.SubNameSpace。MyAssembly ContainingClass,版本=1.3.0.0,文化=中性,PublicKeyToken=b17a5c561934e089
按照上面的"AssemblyQualifiedName"链接获取语法的所有详细信息。
Type.GetType doesn't that check for Object type
,例如System。字符串等……你能试着用
代替= null吗?if (TelerikType.Equals(null))