問題タブ [open-generics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
43001 参照

c# - .NET の「オープン ジェネリック型」とは正確には何ですか?

私はAsp.Net MVC のレッスンを受けていて、メソッドがコントローラーのアクションとして認定されることを学びました。

  • 「オープンジェネリック型」であってはなりません

私はジェネリックをある程度理解し、ある程度使用していますが、

  • .Netのオープン ジェネリック型とは何ですか。
  • 閉じたジェネリック型のようなものはありますか?
  • オープン ジェネリック型は、あまり使用されない用語です。何が使われていますか / それと混同されていますか?
0 投票する
2 に答える
188 参照

structuremap - StructureMap error resolving Open Generic dependency

So I've wired up my open generic plugin in StructureMap like so

But still get the dreaded

No Default Instance defined for PluginFamily KharaSoft.Utils.IRepository`1[[KharaSoft.App.Core.DomainObject, KharaSoft.App.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]

I debug after the Container is initialized and see that it does indeed have an instance of RepositoryBase<> registered so it knows what I want done, but it won't close it for me. Is there something I'm missing here?

0 投票する
1 に答える
822 参照

.net - オープン ジェネリックを優先的に登録する

次のように団結を使用することは可能ですか:

.. 解決しようとすると... が得られますが、解決しようとIMyType<car>すると? または、同じことを行う別の方法で、定義されたジェネリックがオープンジェネリックよりも優先されるのでしょうか?MyType1<car>IMyType<bus>MyType2<bus>

0 投票する
3 に答える
8996 参照

c# - ジェネリック インターフェイスの非ジェネリック バージョンを公開するためのパターン

ページリストを公開するための次のインターフェースがあるとします

今、ページング コントロールを作成したい

ページング コントロールはT(リストの実際の内容) には関心がありません。ページ数、現在のページなどのみが必要です。したがって、ジェネリックである唯一の理由PagedListPagerは、ジェネリックIPagedList<T>パラメーターでコンパイルされるためです。

これはコードの匂いですか?冗長なジェネリックを効果的に持っていることに注意する必要がありますか?

このような場合に、ページャーでジェネリック型を削除できるように、追加の非ジェネリック バージョンのインターフェイスを公開するための標準パターンはありますか?


編集

この問題を解決した現在の方法も追加し、それが適切な解決策であるかどうかについてコメントを求めたいと思いました。

ConcretePagedList<T>これで、非ジェネリック クラス/関数に渡すことができます

0 投票する
1 に答える
991 参照

structuremap - StructureMap とのインターフェイスを実装するすべての型のオープン ジェネリック型を登録します。

ジェネリッククラスIManagerの型として使用できるように、実装しているすべての型を登録したいと考えています。TLazy<T>

例えば:

私の具象型とインターフェースは内部的なものであり、そのため組み込みの StructureMap スキャンメカニズムを使用できないため、自作のスキャナーを使用しています。

ループの最初のステートメントで、すべてのIManagerタイプを登録しますFor<IRadioManager>().Singleton().Use<RadioManager>()

同様に、ジェネリック型として使用できるように登録してLazy<T>ほしいFor<Lazy<IRadioManager>().Use<Lazy<RadioManger>>()

これは可能ですか?StructureMap 用にどのように構成する必要がありますか?

0 投票する
1 に答える
1293 参照

c# - オープンジェネリック型の変数を宣言する方法は? 可能?

オープンジェネリック型の vaiable を宣言する方法はありますか?

与えられた: ユーザーがファクトリ メソッドから取得するジェネリック クラス Logger があります。任意のロガーを保持できる変数を持つ方法はありますか?

現在、Logger は、ログに記録されている型を気にせずにインスタンスの変数を宣言できるという理由だけで、Logger から継承しています。

私は MEF を使用しており、エクスポートでは [Export(typeof(Logger<>))] のような構文を使用してジェネリック型をエクスポートできます... (インポート時に正確な型を指定する) ため、オープン型 (少なくとも typeof で)。今必要なのは次のような構文です

ロガー<> ロガー { get; 設定; }

そのようなことをする可能性はありますか?この特定の構文は、「必要なタイプ」を取得します。

0 投票する
2 に答える
1886 参照

c# - アセンブリスキャンを使用して登録されたAutofac装飾オープンジェネリック

autofacデコレータサポート機能をシナリオに適用しようとしていますが、成功しません。私の場合、登録に名前が正しく割り当てられていないようです。

スキャンしたアセンブリタイプを名前で登録して、後で開いているジェネリックデコレータキーで使用できるようにする方法はありますか?

それとも私は完全に間違っていて、ここで不適切なことをしていますか?

0 投票する
4 に答える
34104 参照

c# - 特定のオープン ジェネリック型を実装するすべての型を取得する

特定のオープン ジェネリック型を実装するすべての型を取得するにはどうすればよいですか?

例えば:

を実装するすべての型を検索しますIRepository<>

0 投票する
1 に答える
8456 参照

dependency-injection - FluentValidation を Simple Injector に登録する正しい方法は何ですか?

AbstractValidatorsを使用してFluentValidation を登録できFluentValidatorFactoryます。ただし、すべての IoC コンテナー登録がブートストラップ/コンポジション ルート中に行われるわけではないため、適切ではありません。代わりに、流暢なバリデーターは別の factory によって登録されます。

コンポジションルート:

IServiceProvider のみに依存する抽象流暢バリデータ ファクトリ

SimpleInjectorの流暢なバリデータ ファクトリの実装

SimpleInjector はオープン ジェネリックを適切にサポートしており、流暢なバリデータ クラスはすべて次のような署名を持っています。

それで、流暢なバリデーターファクトリーを使用する代わりに、バリデーターをブートストラップ/コンポジションルートに登録するより良い方法はありますか?

PS @DotNetJunkie - simpleinjector.codeplex.comにこれに関する wiki ページがあれば素晴らしいでしょう。