我可以在方法中传递泛型类吗?

时间:2013-11-15 13:49:08

标签: c# .net

我有很多名为ErrorHandler的课程,每个课程都做不同的事情。 每个类都在命名空间内。

所以:

namespace1.ErrorHandler
namespace2.ErrorHandler
namespace3.ErrorHandler

指的是三个不同的类。我想要一个带有通用ErrorHandler参数的方法;所以由于我传递给那个方法,它使用它。

有可能吗?

4 个答案:

答案 0 :(得分:9)

你可以用界面来做,比如说:

public class namespace1.ErrorHandler : IErrorHandler {
}    

public class namespace2.ErrorHandler : IErrorHandler {
}
....

和处理错误的方法可能如下所示:

public void HandleError(IErrorHandler handler) {
}

所以可以这样使用:

var erh1 = new namespace1.ErrorHandler();
var erh2 = new namespace2.ErrorHandler();

....
HandleError(erh1);
HandleError(erh2);

答案 1 :(得分:1)

使用多态,是的,只要它们来自公共ErrorHandler类型,就可以是接口或基类。

答案 2 :(得分:1)

让他们都实现一个通用类型.. classinterface

interface IErrorHandler { }

class ErrorHandler : IErrorHandler {}

然后在常用方法中使用它。

答案 3 :(得分:0)

允许不同的类扩展相同的接口,例如IErrorHandler 并且处理它的方法看起来像:

public void HandleError<T>(T errorHandler)
        where T: IErrorHandler
    {

    }