为什么要打字.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);
    }

我有两个问题:

  1. 当我在文本框中输入Telerik.Sitefinity.Pages.Model.PageNode时,Type.GetType(txtTelType.Text)返回null

  2. 如果我用typeof(PageNode)替换该部分,我得到"指定类型"Telerik.Sitefinity.Pages.Model。PageNode'不是动态类型。"

我希望有人可能有一些见解,为什么这些东西不能正常工作,或者可能有一个更好的方法来处理这个问题?作为参考,我的目标(至少现在)是添加一个引用PageNode的动态列,这样我就可以指定一个ShowInLeftNavigation布尔值和一个ShowInRightNavigation布尔值。谢谢你提供的任何帮助。

为什么要打字.GetType返回null,并在siteity中返回teleerik类型

请仔细阅读文档:

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)) 
相关文章: