C#-不';“我不允许回来”;这";在实现类型的接口时作为类型
我有这个:C#-不';“我不允许回来”;这";在实现类型的接口时作为类型,c#,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
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>"));
}
}
公共类MyClass:IView
{
公共视图()
{
归还这个;
}
公共void呈现(ViewContext、System.IO.TextWriter)
{
//我们应该循环遍历所有支持的控件并为它们生成HTML。
//验证绑定呢?
typeof(T).GetFields().ToList().ForEach(x=>writer.WriteLine(x.FieldType+”称为“+x.Name+””);
}
}
我得到一个错误,它不能隐式地将其转换为视图。当我尝试施法时失败了。有没有办法做到这一点?为什么会失败
编辑:添加了视图实现。我在课堂上删减了太多内容。很抱歉没有发布足够的内容。请尝试以下内容:
public class MyClass<T>: IView
{
public View View()
{
return (MyClass<T>) this;
}
}
公共类MyClass:IView
{
公共视图()
{
返回(MyClass)这个;
}
}
MyClass
实例不能转换为视图
。它们只能转换为IView
。如果您想从视图
类继承,您应该这样做。实现类似命名的接口不会神奇地导致类从所需的基类型继承:
public class MyClass<T> : View { ... }
公共类MyClass:视图{…}
任何一个都可以
public class MyClass<T>: IView
{
public IView View()
{
return this;
}
}
公共类MyClass:IView
{
公共IView视图()
{
归还这个;
}
}
或
公共类MyClass:IView
{
公共MyClass视图()
{
归还这个;
}
}
MyClass不是一个视图,不能像您尝试的那样作为一个视图返回。我不知道太多的C,但这是MyClass的一种类型?我不明白如何将MyClass转换为view?为什么它不像构造函数..那么为什么方法名与返回类型相同。。这是打字错误吗。。答案可能是T和观点不一致。。但是你甚至没有在任何地方使用过
T
。。那么您应该使用特定类而不是泛型类。。如果是这样,则CaseView仅定义MyClass必须实现View(),因为MyClass没有View作为其基类,因此将无法作为View返回。请在发布答案时尝试缩进代码。您可以手动将每行缩进4个空格,也可以选择整个块并按下工具栏上的{}
按钮。-1因为您显示的似乎是随机代码实验,而没有解释为什么这会起作用。为什么您决定将MyClass
更改为MyClass
?(更新:别提那个问题。你的答案同时也更新了。)当返回类型为View
时,为什么要在MyClass
中添加显式强制转换?@stakx:我只是想澄清一下,我实际上并没有更新答案,至少我没有改变任何代码MyClass
本来就在那里,只是因为块不是格式化的代码,所以没有显示。我会添加..即使视图实现了IView
public class MyClass<T>: IView
{
public MyClass<T> View()
{
return this;
}
}