我有这个:
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。当我尝试演员时,它失败了。有没有办法做到这一点?为什么会失败?
编辑:添加了查看实施。我在课堂上修剪得太多了。我为没有足够的帖子而道歉。
答案 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;
}
}