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 を取る単一のクラスを持つことができるかということです。入ったときにどんな種類か見なくてもいいんじゃないかな。