首页 > 解决方案 > 无隐式引用转换

问题描述

我有一个公共接口,它控制实现它的对象是否应该可见。基本结构如下所示:

public interface IPreviewObject
{
  bool Hidden { get; set; }
}

然后,我有一个实现这个接口的类(以及其他一些接口)

public abstract class MyParameter<T> : Param<T>, IParameter where T : class, IPreviewObject
{
  protected MyParameter(string name)
    : base(name)
  {
  }
  private bool m_hidden = false;
  public bool Hidden
  {
    get { return m_hidden; }
    set { m_hidden = value; }
  }
}

最后,我有第二个类,它继承自MyParameter类,如下所示:

public sealed class MyComponent : MyParameter<SpecialType>
{
  public MyComponent ()
    : base("My Component Name")
  {
  }
}

但是,我的第二个类MyComponent的定义出现错误,它说没有从 SpecialType 到 IPreviewObject 的隐式引用转换。如果我从 MyParameter 定义中删除IPreviewObject,则相同的代码可以正常工作。但是,当我尝试添加IPreviewObject继承时,出现此错误。谁能解释为什么?或者如何解决这个问题?

标签: c#

解决方案


SpecialType 应该实现接口 IPreviewObject


public class SpecialType : IPreviewObject
{
    public bool Hidden { get => throw new NotImplementedException(); 
                        set => throw new NotImplementedException(); }
}

推荐阅读