ジェネリックメソッドのジェネリックパラメータのインスタンスが、値型または参照型のいずれかに割り当てられているかどうかをテストする方法はありますか?私はタイプを保持しなければならない一般的な方法でこれを行うことができるようにしたいと思います.Tはインスタンス、Kはそのタイプの識別子フィールドの型です(ベースから継承するので、タイプ)。私はKを価値の種類に制限したくない。 Kは、それが同等であることに依存しているようにエラー(K)の結果をデフォルトに等しいかどうかをチェック値型とすることができるようC#ジェネリック型のテスト割り当て
public static bool Save<T, K>(T instance)
{
// variable to hold object identifer
K instanceId = default(K);
PropertyInfo[] properties = typeof(T).GetProperties();
// loop through properties of the T
// if property is decorated with a specific attribute then assign to instanceId
// end loop
// check that we have a value assigned to instanceId other than default(K)
// if not return false otherwise continue to persist item
}
:コードは次のようなものです。これを回避する方法はありますか?
現在のケースでは、ジェネリック型Tの条件をベース型BaseObjectから継承する必要があるため、ジェネリックとテストの割り当てに関する一般的な問題について質問しています。
私は実際にこのようなことをしています。デフォルト(K)とフラグを割り当てていますが、値がデフォルト(K)以外の値だったかどうかを確認することができます。それが値か参照型かどうかわからない場合は、これを行うことはできません。 –
私はこの問題をデフォルト(K)に等しいかどうかをより明確に反映するように質問を更新しました。 –