超まとめ
ジェネリッククラスでasを使って型キャストしようとしてコンパイラーに「Tyep type parameter ‘T’ cannnot be used with the ‘as’ operator be cause it does not have classs type constraint nor a ‘class’ constraint」と言われたら、コンパイラーがキャスト先がクラス(参照型)かどうかがわからなくて困っているので、ジェネリッククラス宣言にclassの型パラメータ制約を付ければOK。
public class Example<T> { public async Task<T> ExampleMethod() { //..... some codes ..... var dao = serializer.ReadObject(await streamTask) as T; //← error return dao; } }
public class Example<T> where T : class //← add class constraint { public async Task<T> ExampleMethod() { //..... some codes ..... var dao = serializer.ReadObject(await streamTask) as T; return dao; } }