调用不同类型的常用方法(使用泛型?)

时间:2015-12-06 17:29:20

标签: c# generics

我有类ClassOneClassTwo,它们分别实现了一个名称相同的方法: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>()工作?

1 个答案:

答案 0 :(得分:1)

您需要引入一个抽象基类,或者更好的是,使用Validatable方法引入名为Validate()的接口,并且您需要使每个类型扩展该抽象基类,或者(更好的是)实现该接口。

然后,您的Process()方法将如下所示:

public void Process<T>(Map<T> map, T value) 
    where T: Validatable
{
}