我有很多名为ErrorHandler
的课程,每个课程都做不同的事情。
每个类都在命名空间内。
所以:
namespace1.ErrorHandler
namespace2.ErrorHandler
namespace3.ErrorHandler
指的是三个不同的类。我想要一个带有通用ErrorHandler
参数的方法;所以由于我传递给那个方法,它使用它。
有可能吗?
答案 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)
让他们都实现一个通用类型.. class
或interface
:
interface IErrorHandler { }
class ErrorHandler : IErrorHandler {}
然后在常用方法中使用它。
答案 3 :(得分:0)
允许不同的类扩展相同的接口,例如IErrorHandler 并且处理它的方法看起来像:
public void HandleError<T>(T errorHandler)
where T: IErrorHandler
{
}