問題タブ [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.
c# - .NET の「オープン ジェネリック型」とは正確には何ですか?
私はAsp.Net MVC のレッスンを受けていて、メソッドがコントローラーのアクションとして認定されることを学びました。
- 「オープンジェネリック型」であってはなりません
私はジェネリックをある程度理解し、ある程度使用していますが、
- .Netのオープン ジェネリック型とは何ですか。
- 閉じたジェネリック型のようなものはありますか?
- オープン ジェネリック型は、あまり使用されない用語です。何が使われていますか / それと混同されていますか?
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?
.net - オープン ジェネリックを優先的に登録する
次のように団結を使用することは可能ですか:
.. 解決しようとすると... が得られますが、解決しようとIMyType<car>
すると? または、同じことを行う別の方法で、定義されたジェネリックがオープンジェネリックよりも優先されるのでしょうか?MyType1<car>
IMyType<bus>
MyType2<bus>
c# - ジェネリック インターフェイスの非ジェネリック バージョンを公開するためのパターン
ページリストを公開するための次のインターフェースがあるとします
今、ページング コントロールを作成したい
ページング コントロールはT
(リストの実際の内容) には関心がありません。ページ数、現在のページなどのみが必要です。したがって、ジェネリックである唯一の理由PagedListPager
は、ジェネリックIPagedList<T>
パラメーターでコンパイルされるためです。
これはコードの匂いですか?冗長なジェネリックを効果的に持っていることに注意する必要がありますか?
このような場合に、ページャーでジェネリック型を削除できるように、追加の非ジェネリック バージョンのインターフェイスを公開するための標準パターンはありますか?
編集
この問題を解決した現在の方法も追加し、それが適切な解決策であるかどうかについてコメントを求めたいと思いました。
ConcretePagedList<T>
これで、非ジェネリック クラス/関数に渡すことができます
structuremap - StructureMap とのインターフェイスを実装するすべての型のオープン ジェネリック型を登録します。
ジェネリッククラスIManager
の型として使用できるように、実装しているすべての型を登録したいと考えています。T
Lazy<T>
例えば:
私の具象型とインターフェースは内部的なものであり、そのため組み込みの StructureMap スキャンメカニズムを使用できないため、自作のスキャナーを使用しています。
ループの最初のステートメントで、すべてのIManager
タイプを登録しますFor<IRadioManager>().Singleton().Use<RadioManager>()
同様に、ジェネリック型として使用できるように登録してLazy<T>
ほしいFor<Lazy<IRadioManager>().Use<Lazy<RadioManger>>()
これは可能ですか?StructureMap 用にどのように構成する必要がありますか?
c# - オープンジェネリック型の変数を宣言する方法は? 可能?
オープンジェネリック型の vaiable を宣言する方法はありますか?
与えられた: ユーザーがファクトリ メソッドから取得するジェネリック クラス Logger があります。任意のロガーを保持できる変数を持つ方法はありますか?
現在、Logger は、ログに記録されている型を気にせずにインスタンスの変数を宣言できるという理由だけで、Logger から継承しています。
私は MEF を使用しており、エクスポートでは [Export(typeof(Logger<>))] のような構文を使用してジェネリック型をエクスポートできます... (インポート時に正確な型を指定する) ため、オープン型 (少なくとも typeof で)。今必要なのは次のような構文です
ロガー<> ロガー { get; 設定; }
そのようなことをする可能性はありますか?この特定の構文は、「必要なタイプ」を取得します。
c# - アセンブリスキャンを使用して登録されたAutofac装飾オープンジェネリック
autofacデコレータサポート機能をシナリオに適用しようとしていますが、成功しません。私の場合、登録に名前が正しく割り当てられていないようです。
スキャンしたアセンブリタイプを名前で登録して、後で開いているジェネリックデコレータキーで使用できるようにする方法はありますか?
それとも私は完全に間違っていて、ここで不適切なことをしていますか?
c# - 特定のオープン ジェネリック型を実装するすべての型を取得する
特定のオープン ジェネリック型を実装するすべての型を取得するにはどうすればよいですか?
例えば:
を実装するすべての型を検索しますIRepository<>
。
dependency-injection - FluentValidation を Simple Injector に登録する正しい方法は何ですか?
AbstractValidators
を使用してFluentValidation を登録できFluentValidatorFactory
ます。ただし、すべての IoC コンテナー登録がブートストラップ/コンポジション ルート中に行われるわけではないため、適切ではありません。代わりに、流暢なバリデーターは別の factory によって登録されます。
コンポジションルート:
IServiceProvider のみに依存する抽象流暢バリデータ ファクトリ
SimpleInjectorの流暢なバリデータ ファクトリの実装
SimpleInjector はオープン ジェネリックを適切にサポートしており、流暢なバリデータ クラスはすべて次のような署名を持っています。
それで、流暢なバリデーターファクトリーを使用する代わりに、バリデーターをブートストラップ/コンポジションルートに登録するより良い方法はありますか?
PS @DotNetJunkie - simpleinjector.codeplex.comにこれに関する wiki ページがあれば素晴らしいでしょう。