2011-04-27 85 views
3

我想实现的是类似下面这样,它的Visual Studio抱怨,我不知道如何去实现它:我可以从泛型类型T继承泛型类吗?像MyClass的<T>:T

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 

} 

回答

3

也许c#扩展方法在这种情况下是解决您的问题的一种方法。

@see http://msdn.microsoft.com/en-us/library/bb383977.aspx

埃里克·德Carufel写扩展方法,以及如何一些有趣的文章来管理它们的范围: http://blog.decarufel.net/2009/02/extension-methods-series-managing-scope.html

+0

我喜欢这个主意!我会尽力让你知道;)谢谢! – pencilCake 2011-04-27 10:23:41

+1

+1 Yup;现在我知道pencilCake的意图了,那绝对是一种去路!我喜欢扩展方法;他们可以为方法启用多重继承(不是属性/字段,尽管如此) – 2011-04-27 10:28:37

+0

感谢KimCM!我的建议已解决了我的问题。 – pencilCake 2011-04-27 12:07:25

1

不能从非继承根本不存在类型,不;这就是你将使用你所展示的代码做的事情。

最接近你可以从where T条款中的类继承。无论如何,效果不会有太大的不同。

+1

基本上T可以是按钮或复选框或下拉等,我想添加功能,可以根据通过以下属性提供的某些rightNames来启用/禁用它们:EnabledByRightName,VisibleByRightName。 – pencilCake 2011-04-27 10:06:50

+0

也试图使CheckBox和RadioButton的子类 - 不能继承按钮基,因为那样它不会是CheckBox或RadioButton,它将是按钮基。必须编写两次代码 - 或将其抽象为辅助方法,跛脚。 – BrainSlugs83 2013-06-18 08:11:12