我可以从泛型类型T继承一个泛型类吗?例如 MyClass<T>:T。

3
我想实现的是下面这样的效果,但Visual Studio会报错,我不知道该怎么实现:
public abstract class My_BaseControl<T> : T, IRightBasedUsability
        where T : System.Web.UI.WebControls.WebControl 
{

    // Some methods that I want to have for all 
    //the extended asp.net controls along my application
    //which implements IRightBasedUsability

}
2个回答

3

我喜欢这个想法!我会尝试并告诉你的 ;) 谢谢! - pencilCake
1
+1 没错;现在我知道pencilCake的意图了,那绝对是正确的方法!我喜欢扩展方法;它们可以为方法(但不包括属性/字段)启用多重继承。 - Andrew Barber
很遗憾,你不能使用扩展方法来覆盖抽象方法。 - BrainSlugs83

1

你不能从一个不存在的类型继承,这就是你在展示的代码中所做的。

你能够做到的最接近的方式是从你的where T子句中的类继承。不管怎样,效果都不会有太大的区别。


1
基本上,T 可以是按钮(Button)、复选框(CheckBox)、下拉菜单(DropDown)等。我想添加一个功能,根据一些通过属性提供的权限名称(如:EnabledByRightName, VisibleByRightName),让它们可以启用/禁用。 - pencilCake
还尝试创建CheckBox和RadioButton的子类——无法继承button base,因为它不会是CheckBox或RadioButton,而应该是button base。必须重写代码两次——或将其抽象出来成为helper方法,有点麻烦。 - BrainSlugs83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接