由于错误,构建失败- 'Value_Type._editor是'字段'But用作'类型&

本文关键字:editor Type 字段 类型 用作 But Value 错误 构建 失败 于错误 | 更新日期: 2023-09-27 18:01:30

有人能帮助我理解为什么我得到这个错误在我的代码,我怎么能解决它?

'Value_Type._editor is a 'field' but is used like a 'type'

请参阅下面的代码:

    void MainFormLoad(object sender, EventArgs e)
    {                       
        Value_Type valueType = new Value_Type(typeof(TestEditorClass));
    }

My Value_Type class:

    public class Value_Type
    {
        object _editor;
        string _content;
        public Value_Type(object editor)
        {
            this._editor = editor;
            this._displayName = displayName;
        }
        public string Content
        {
            get { return _content; }
            set { _content = value; }
        }
        [Editor(typeof(_editor), typeof(UITypeEditor))] // the error appears here when I pass _editor as a parameter to the attribute.
        public IRecord Key { get; set; }
    }

由于错误,构建失败- 'Value_Type._editor是'字段'But用作'类型&

typeof(_editor)无效。正如错误消息告诉您的那样,typeof的参数必须是一个类型,例如typeof(TestEditorClass)而不是是一个类型的实例。

在这种情况下,看起来你的_editor 类型,即(Type)_editor将比_editor.GetType()更合适。

但是,这两种方法都不能单独解决问题,因为属性参数必须是常量。

您的代码段中有几个问题

  1. typeof()需要一个类型,你正在传递一个变量,这就是编译器引发错误的原因。要获取对象的类型,可以使用object.GetType()。当您在_editor中存储Type时,只需将类型转换为(Type)_editor

  2. _editor是一个实例变量,你不能在那里访问它。访问非静态成员_editor需要对象引用