c# - VS 设计时错误 - 类型 'ICustomType[]' 的对象无法转换为类型 'ICustomType[]'

标签 c# .net winforms windows-forms-designer propertygrid

我从 PropertyGrid 创建了一个派生控件,但以下属性导致 Visual Studio 在设计时出现问题。

注意:运行时没有任何问题。这只是关于设计师,如果我从表单的资源文件中手动删除编码值,问题就会得到解决。

构造函数:

/// <summary>
/// Public constructor.
/// </summary>
public FilterablePropertyGrid()
{
    base.SelectedObjects = wrapper.ToArray();
}

属性代码:

private List<ObjectWrapper> wrapper = new List<ObjectWrapper>();

/// <summary>
/// Overwride the PropertyGrid.SelectedObject property.
/// The object passed to the base PropertyGrid is the wrapper.
/// </summary>
public new List<ICustomType> SelectedObjects
{
    get
    {
        return wrapper.Any() ?
            base.SelectedObjects.Select(p => ((ObjectWrapper)p).SelectedObject).ToList() :
            new List<ICustomType>();
    }
    set
    {
        if (value == null || value.Count == 0)
        {
            wrapper = new List<ObjectWrapper>();
            base.SelectedObjects = new object[] { };
        }
        else
        {
            wrapper = new List<ObjectWrapper>(value.Select(p => new ObjectWrapper(p)));
            // Link the wrapper to the parent PropertyGrid.
            base.SelectedObjects = wrapper.ToArray();
        }
    }
}

错误: enter image description here

不知道你能不能帮我看看这是什么问题。

最佳答案

因为这是你自己的自定义类型(不是框架类型),这个错误几乎总是意味着你在两个不同的程序集中声明了相同的接口(interface)。

检查声明此类型的位置。它应该只在一个程序集中。根据需要添加引用,以便所有地方都可以访问单个程序集中的类型。

将相同的代码文件编译成两个程序集会创建两种不同的类型,而这两种类型恰好被称为同一事物。它们不是同一类型,不可互换。

关于c# - VS 设计时错误 - 类型 'ICustomType[]' 的对象无法转换为类型 'ICustomType[]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768154/

相关文章:

c# - 如何找到两个字符串之间的差异?

c# - 如何使用 EntityFramework 核心在插入中强制使用默认值?

c# - 如何自动创建 .cs 文件?

c# - dotnet 核心 3.1 IIS 错误 "An attempt was made to access a socket in a way forbidden by its access permissions (10013)"

C# Windows 窗体 - DataRepeater "Template-Based"绑定(bind)?

c# - Winforms 绑定(bind)源问题添加新记录

c# - 如果另一个工具条位于同一个工具条面板上,则将工具条稍微向左移动会创建一个新行

c# - 从 xml 中读取属性

c# - EF Core - 同一实体的并发保存创建多个

.net - File.Copy在完成后锁定源文件