通用基类,其中T也是通用基类

时间:2015-09-25 03:38:51

标签: c# generics

我有一个通用基类,如:

public abstract class SomeThingBase<T> where T : class

我希望有另一个这样的基类:

public abstract class MangerBase<T> where T : SomeThingBase<T>

你如何在C#中实现这一目标? 当尝试像这样使用ManagerBase时,它似乎无法工作。

class TestManager : ManagerBase<TestSomething>

2 个答案:

答案 0 :(得分:1)

为了做到这一点,你必须从顶部传递你的通用声明。这可能会非常混乱,所以不要这样做。

angular.module('myApp')
  .controller('ItemCtrl', function ($routeParams) {
    var self = this;
    self.productId = $routeParams.productId;
  });

答案 1 :(得分:0)

绝对可以定义,但实际上无法实现。假设你有以下定义:

    public abstract class SomeThingBase<T> where T : class { }
    public abstract class MangerBase<T> where T : SomeThingBase<T> { }

但是,定义一个实现ManagerBase<T>SomethingBase<T>的类是不可能的,因为不支持多重继承,并且T不能满足这两个约束而没有多重继承的泛型类型。