[解決済み] 型 'T' は参照型でなければならない」場合、メソッドをジェネリックにするにはどうしたらいいですか?重複
2023-08-10 17:58:48
質問
重複の可能性があります。
なぜ私は私のC#ジェネリックメソッドで "エラー:...参照型でなければなりません "を得るのですか?
2つのRepositoryメソッドがありますが、ほとんど同じです。
public IList<Fund> GetFundsByName(int pageSize, string searchExpression)
{
return _session.CreateCriteria<Fund>()
.AddNameSearchCriteria<Fund>(searchExpression)
.AddOrder<Fund>(f => f.Name, Order.Asc)
.SetMaxResults(pageSize).List<Fund>();
}
public IList<Company> GetCompaniesByName(int pageSize, string searchExpression)
{
return _session.CreateCriteria<Company>()
.AddNameSearchCriteria<Company>(searchExpression)
.AddOrder<Company>(f => f.Name, Order.Asc)
.SetMaxResults(pageSize).List<Company>();
}
唯一の違いは、最初の方の
_session.CreateCriteria
の型が
Fund
であり、2つ目は
company
メソッド定義を変更することで、これをジェネリックにできないかと考えていました。
public IList<T> GetEntitiesByName<T>(int pageSize, string searchExpression)
where T : ISearchableEntity
{
return _session.CreateCriteria<T>()
.AddNameSearchCriteria<T>(searchExpression)
.AddOrder<T>(f => f.Name, Order.Asc)
.SetMaxResults(pageSize).List<T>();
}
ここで、ISearchableEntityは次のように定義されています。
public interface ISearchableEntity
{
string Name { get; set; }
}
が、残念ながらNHibernateはこれを好まず、エラーを出します。
The type 'T' must be a reference type in order to use it as parameter 'T' in the generic type or method 'NHibernate.ISession.CreateCriteria<T>()'
他の方法でこれを汎用化することは可能でしょうか?
どのように解決するのですか?
制約を追加してみるとよいでしょう。
class
:
where T : class, ISearchableEntity
関連
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] Javaで汎用配列を作成する方法は?
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】Nullable型をジェネリックパラメータにすることは可能か?
-
[解決済み】メソッドの戻り値の型を汎用的にする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] 関数を終了するには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない