我有类ClassOne
和ClassTwo
,它们分别实现了一个名称相同的方法:Validate()
。我想在Validate()
方法中对每个类调用Process<>()
方法:
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>()
工作?
答案 0 :(得分:1)
您需要引入一个抽象基类,或者更好的是,使用Validatable
方法引入名为Validate()
的接口,并且您需要使每个类型扩展该抽象基类,或者(更好的是)实现该接口。
然后,您的Process()
方法将如下所示:
public void Process<T>(Map<T> map, T value)
where T: Validatable
{
}