C# - 当实现类型的接口时,不允许我将“this”作为类型返回

时间:2011-02-26 06:23:17

标签: c#

我有这个:

public class MyClass<T>:  IView
{
        public View View()
        {
            return this;
        }
        public void Render(ViewContext viewContext, System.IO.TextWriter writer)
        {
            // We should cycle though all supported controls and generate HTML for them.
            // What about the validation binding?

            typeof(T).GetFields().ToList<FieldInfo>().ForEach(x => writer.WriteLine(x.FieldType + " is called " + x.Name + "</br>"));           
        }  


}

我收到一个错误,它无法将其隐式地转换为View。当我尝试演员时,它失败了。有没有办法做到这一点?为什么会失败?

编辑:添加了查看实施。我在课堂上修剪得太多了。我为没有足够的帖子而道歉。

3 个答案:

答案 0 :(得分:6)

MyClass<T>个实例无法转换为View。它们只能转换为IView。如果你想继承View类,你应该这样做。实现类似命名的接口并不会奇怪地导致类从您需要的基类型继承:

public class MyClass<T> : View { ... }

答案 1 :(得分:3)

其中任何一个都可以。

public class MyClass<T>:  IView
{
    public IView View()
    {
        return this;
    }   
}

或者

public class MyClass<T>:  IView
{
    public MyClass<T> View()
    {
        return this;
    }   
}

MyClass 一个视图,并且不能像您尝试的那样返回。

答案 2 :(得分:0)

请试试这个:

public class MyClass<T>:  IView
{
        public View View()
        {
            return (MyClass<T>) this;
        }   
}