调用不同类型的通用方法(使用泛型?)
本文关键字:泛型 方法 同类型 调用 | 更新日期: 2023-09-27 18:25:48
我有两个类ClassOne
和ClassTwo
,它们分别实现了一个同名的方法:Validate()
。我想从我的Process<>()
方法中调用这些类中的每一个的Validate()
方法:
public void Process<T>(Map<T> map, T value)
{
var validation = value.Validate();
var result = map(value);
SendEmail(result);
SaveAsFile(value.ToString());
}
这种方法是这样使用的:
Process<ClassOne>(new ClassOneMap(), new ClassOne())
Process<ClassTwo>(new ClassTwoMap(), new ClassTwo())
但这不起作用,因为类型T
没有方法Validate()
。
我必须做些什么才能使Process<T>()
工作?
您需要引入一个抽象基类,或者更好的是,引入一个带有Validate()
方法的名为Validatable
的接口,并且您需要使每个类型扩展该抽象基类,或(更好的是)实现该接口。
然后,您的Process()
方法将如下所示:
public void Process<T>(Map<T> map, T value)
where T: Validatable
{
}