超まとめ
ジェネリッククラスで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;
}
}