我有一个视图的HtmlHelper <ChildType>不能分配给的HtmlHelper <MotherType>
ViewUserControl<SearchViewData>
其中
SearchViewData: CommonViewData
在此视图中我因此具有为Html的参考。
这是HtmlHelper<SearchViewData>
我创建一个名为CommonHtmlHelper自定义HtmlHelper类,我想这种类型的(注意的HtmlHelper参数的类型):
public static SelectList TranslatedApplicationSelectList(this HtmlHelper<CommonViewData> htmlHelper, string selectedCode)
由于SearchViewData从CommonViewData继承和我的HTML是键入HtmlHelper < SearchViewData>它因此也是HtmlHelper < CommonViewData>。
但是,当我尝试访问TranslatedApplicationSelectList方法时,它在我的视图中出现错误,指出HtmlHelper < SearchViewData>不能分配给HtmlHelper < CommonViewData>。
这是我的面向对象逻辑中的缺陷吗?这是C#如何在泛型中处理继承的限制(我认为Skeet曾经向我解释过这一点,但我找不到该帖子了)?
最重要的是,我该如何解决它?
是的,那些事情解释我早些时候由约翰Skeet。我有一种感觉,这是我的问题的原因,但不确定和不知道条款,所以再次找不到问题。 所以对我的问题的唯一解决方案是创建一个方法,接受HtmlHelper,并写另一个,如果我想要在另一种类型上执行:S 不会有语法来“铸造”您的泛型类型也可以接受吗?它将把责任推给程序员,就像普通演员一样。 –
2009-09-16 09:23:09