使用泛型返回“默认”对象的好方法

时间:2018-07-22 13:57:23

标签: c# .net generics

假设我有一个类是其他类的父类,并且包含布尔值标志,指示在处理过程中出现问题。例如:

class BaseClass 
{
    private bool error;
    ....
}

该类的子级用于处理。
实现服务接口的类使用它:

public interface MyService 
{
   public ClassA execute1();
   public ClassB execute2();
   public List<ClassC> execute3(); 
}

ClassAClassBClassCBaseClass扩展。
实现上述接口的类的实例在其他类(例如Spring @Service)中使用,其中包含服务列表:

List<MyService> services;

在服务类中,还有一个方法可以在几个同时运行的线程中调用MyService实现的实例。签名是

public <T> List<T> callServices(Function<MyService, T> callback)

我的问题是-在callServices方法内部如何返回带有错误标志集的ClassA,ClassB或List的空对象?

我想到了类似的东西

public <T extends BaseClass> List<T> callServices(Function<MyService, T> callback)

但这不适用于List<ClassC>

我们不知道确切的类型,并且存在擦除操作。问题出在List<ClassC>。我想到的是在存在错误标志的情况下向该方法传递一个额外的参数,但是我想知道是否还有其他更通用的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

where T: new()

并将错误初始化放入默认构造函数中。反序列化将清除错误。有时,即使不对T进行反序列化也可以。