問題タブ [unity-container]
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.
asp.net-mvc - Spring.NET と ModelBinder を使用した ASP.NET MVC
ASP.NET MVC で Spring.NET IoC 機能を利用するデモに取り組んでいます。これは、www.asp.net サイトのペア プログラミング ビデオ チュートリアルで紹介されている MyBlog アプリケーションのようなものです。Microsoft の Unity フレームワークを使用して同じデモを完了したので、Spring コンテナーを試してみたいと思います。そのために、最初に Spring オブジェクト ファクトリを次のように作成する単純な IControllerFactory を実装しました。
次に、次のようにそのファクトリからコントローラーを取得します。
(簡略化のためにエラー処理を省略しています)。
今私の HomeController のどこかに私はこの種のアクションを持っています:
そして、エントリ パラメーター (本当に基本的なもの) のエディターを定義する AddEntry.aspx ビューの一部を次に示します。
Unity IoC を使用しているときは、魅力的に機能します。「エントリ」パラメーターは、本来のようにフォームから逆シリアル化され、行
問題なく完了します。
しかし、Spring.NET オブジェクト ファクトリ (上記のように) に切り替えると、事態はおかしくなり始めます。まず、パラメータ「entry」が null になるため、例外がスローされます。私の側で考えられる問題を追跡するために、次のようなカスタム IModelBinder を実装しました。
Unity フレームワークを使用してここに来て、bindingContext から HttpRequest にドリルダウンすると、Request.HttpMethod が「POST」であり、Request.Form が適切に入力されていることがわかります。Spring.NET を使用して同じことを行うと、メソッドは「GET」になり、Request.Form は空になります。ただし、コントローラー アクション (AddEntry) に進み、両方の状況で Request にドリルダウンすると、Request.HttpMethod と Request.Form に適切な値があることがわかります。
問題は、Spring.NET でバージョンを修正して、Unity フレームワークを使用するバージョンと同じように機能させるにはどうすればよいかということです。
c# - Enterprise Library Unity とその他の IOC コンテナーの比較
Enterprise Library Unity と他の IoC コンテナー (Windsor、Spring.Net、Autofac など) を使用することの長所と短所は何ですか?
.net - 連載順とUnityの問題
XML とカスタム シリアライザーを使用するアプリケーションがあり、最近、Unity 1.2 を使用していくつかの DI を追加し、クラスに 2 つのプロパティを設定しました。
クラスをシリアル化すると、Unity によって設定されたプロパティが最初にシリアル化され、その後に他のすべてのプロパティが順番にシリアル化されます。
したがって、クラスのプロパティ 2 と 3 が Unity によって設定されている場合、シリアル化されたクラスは次の順序で出力されます: 23145
XmlSerialiser の場合、XmlElement 属性を使用して順序を設定できますが、カスタム シリアライザーは依然として間違った順序でクラスを出力しており、固定長形式であるため、順序が重要です。
Unityを使用しながら、クラスを順番にシリアル化する方法を知っている人はいますか?
ありがとう
コード例 クラス
ユニティ構成
私が呼び出すHeaderDocumentを構築するとき
カスタム serilaiser を変更する必要はありません。現在、Unity 構成にプロパティ 1 を追加したので、テストを行うことができます。
しかし、私が本当に知りたいのは、Unity によって入力されたプロパティが、他の方法によって設定されたプロパティとは異なる方法で扱われる理由です。(リフレクション、コンストラクター、またはプロパティ セッター)。
.net - Unity コンテナー情報を xml 構成にエクスポートする
Microsoft Unity では、既存の XML 構成からコンテナーを構成できますが、逆の方法はありますか? 初期化されたコンテナーから、対応する XML 構成をエクスポートしますか?
c# - .NET アプリケーションでデータベース列を疎結合するにはどうすればよいですか?
ほぼ同一のデータベースの 2 つのバージョンがあります。以下に、基本的な違いを示す例の表を作成しました。つまり、ID 列が整数 ID から GUID に変更され、さまざまなプロパティが更新されました。アーカイブされた例では、読み取り専用に置き換えられ、非表示になっています。
レガシー バージョン:
新しいバージョン:
NHibernate などの O/R マッパーを使用して、これらのデータベース バージョンのいずれかに接続できるようにする必要があります。構成ファイルの設定を通じて、使用するバージョンをアプリケーションに伝えられるようにしたいと考えています。
私の最初の計画は、ビジネス ロジック用の共通インターフェイスを作成し、Unity などの IoC コンテナーを使用して、構成ファイル内の関連する具象クラスを交換することでした。
以下は、この理論をテストするために作成したコードの例です。
これが可能かどうか (具体的には Unity と NHibernate で)、誰でもアドバイスできますか? もしそうなら、関連する NHibernate マッピング ファイルを作成する方法を教えてください。
または、他の方法または他の IoC および O/R マッピング ツール (商用またはオープン ソース) を使用して、問題の解決策を提案できますか?
どうもありがとう、
ポール
.net - Castle Windsor を使用して登録せずにクラスを解決する
次の役に立たないプログラムを見てください。
UnityContainer は Program のインスタンスを返しますが、Windsor コンテナーは ComponentNotFoundException をスローします。
両方の動作の引数を確認でき、最終的にどちらになるかは気にしませんが、Prism V2 Drop 8 (執筆時点で最新のもの) は内部的に Unity の動作に依存しており、登録されていないクラスを要求します。
これらすべてのクラスを Prism 用に見つけて登録するよりも、Windsor を Unity のように動作させたいと思います。これを行うのに役立つものはグーグルで見つけられませんでした(私の用語は間違っているかもしれませんが)、ウィンザーのドキュメントはかなり悪いです...
誰でもこの問題の解決策を提案できますか?
c# - Unity App.Config ファイルに汎用クラスを含める
ISimpleCache<IBrokeredDataObject>
App.Config ファイルに型エイリアス (次に型) として追加したい型のクラスがあります。
この線
<> のために明らかに間違っていますが、それらをエスケープするとは確信していません。
どちらでも正しいです。
私は現在、Unity を使用するために自分のコードをバラバラにしています。コンパイル可能なコード ベースからは程遠いため、これをすぐにテストすることはできず、ここで何らかの確認を得たいと考えていました。
c# - Unity InjectionConstructor 属性とは?
Unity InjectionConstructor 属性とは何ですか?
.net - Unity フレームワークの DependencyAttribute はパブリック プロパティに対してのみ機能しますか?
コード内のいくつかのアクセシビリティ関連のものをクリーンアップしようとしていたところ、Unity の依存性注入がうっかり壊れてしまいました。しばらくして、実際には DLL の外部に公開したくないいくつかのパブリック プロパティを internal にマークしたことに気付きました。その後、例外が発生し始めました。
したがって、Unity で [Dependency] 属性を使用すると、パブリック プロパティに対してのみ機能するようです。Unity アセンブリには内部およびプライベートの props が表示されないため、これは理にかなっていると思いますが、Unity以外の誰も設定したくない、または設定できないようにしたくないパブリックプロパティがたくさんあるのは本当に汚いと感じます。
Unity に内部プロパティまたはプライベート プロパティも設定させる方法はありますか?
ここに合格したい単体テストがあります。現在、public prop テストのみがパスします。
更新しました:
渡されたプロパティを設定するコールスタックに気付きました:
したがって、少なくとも内部バージョンを機能させるために、これらをアセンブリのプロパティに追加しました。
ただし、変化なし。Unity/ObjectBuilder はまだ内部プロパティを設定しません
inversion-of-control - タイプがUnityに登録されているかどうかのテスト
Resolveを呼び出して例外をトラップせずに、タイプがUnityコンテナに登録されているかどうかをテストできますか?