我对 ServiceResponse 对象的渴望是我想把他们要求的“东西”还给他们。这可以是一个 Foo 列表,也可以是一个 Foo 或任何东西,只要它是一个具有无参数构造函数的类。但是,有时我想返回一个字节数组 (byte[]),这是不允许的,因为它是一个结构并且显然没有无参数的构造函数。
public class ServiceResponse<T> : ServiceResponse where T : new() {
[DataMember]
public T Result { get; set; }
public ServiceResponse() {
this.WasSuccessful = false;
this.Result = new T();
this.Exceptions = new List<CountyException>(); ;
}
public ServiceResponse(bool wasSuccessful, List<CountyException> exceptions, T result) {
this.Result = result;
this.WasSuccessful = wasSuccessful;
this.Exceptions = exceptions;
}
}
如果我将声明行调整为以下内容:
public class ServiceResponse<T> : ServiceResponse where T : new(), struct {
我收到以下错误:
byte[] 必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型方法 ServiceResponse 中将其用作参数 T
所以问题是,我可以有一个单一的类,它接受一个泛型或结构的 T 吗?即使我必须看看它是什么类型的,我想也可以。