この記事では、WPFで、.NETのコア3.0でIOCを使用して上のグラフィックのチュートリアルを紹介し、主である、非常に詳細に説明した紙サンプルコードは、習得したり、作業するために私たちのすべてのための学習の一定の基準値を持っている、あなたは、次の友人を必要としますそこから学ぶために一緒に来ます
序文
我々は、すべての.NETのコア3.0は、第六のプレビュー版をリリースしました知っている、我々はまた、.NETのコア3.0は、今ちょうど、クライアントがWPFを使用するコードジェネレータを書い作成WPFプロジェクト、および今日をサポートしていることを知っているので、置きますWPFは、IOCがそれを記録するプロセスを作成し、使用するために、私はあなたが助けることができると思います。もちろん、私は私が立証される記事を読んでいる記事のサンプル・コードの例を取り上げます。
ステップ
1、あなたはもちろん、vs2019を使用して作成することができ、コマンドラインからWPFプロジェクトを作成します。あなたはvs2019プロジェクトを作成し使用していない場合は、具体的な手順を示していない、もちろん、あなたは、ページの右上隅、心配の地域を閉じます。
❯ます。mkdir WpfIoc ❯CD WpfIoc ❯dotnet.exe --version 3.0.100-preview6-012264 ❯DOTNET WPF新 テンプレート"WPFアプリケーションは、"正常に作成されました。 ...作成後のアクションの処理 実行'DOTNET復元' Cに:\ユーザー\ LAUREの\プロジェクト... WpfIoc \ WpfIoc.csprojを\ Cのための90.03ミリ秒で完了した復元:\ Users \ユーザーLAUREの\プロジェクト\ WpfIoc \ WpfIoc。 csproj。 復元に成功しました。 ❯DOTNETは構築 のMicrosoft(R)は、.NETのコア用エンジンのバージョン16.1.54-プレビュー+ gd004974104を構築する 著作権(C)マイクロソフトコーポレーション。全著作権所有。 Cのための19.92ミリ秒で完了した復元:\ Users \ユーザーLAUREの\プロジェクト\ WpfIoc \ WpfIoc.csproj。 C:\プログラムファイル\のDOTNET \ SDK \ 3.0.100-preview6-012264 \ SDKの\ Microsoft.NET.Sdk \ターゲット\ Microsoft.NET.RuntimeIdentifierInference.targets(151,5):メッセージNETSDK1057:あなたが使用しているプレビュー版.NETのコアの。参照:https://aka.ms/dotnet-core-preview [C:\ Users \ユーザーLAUREのプロジェクトは、\ \ WpfIoc \ WpfIoc.csproj] WpfIoc - > C:\ Users \ユーザーLAUREプロジェクト\ \ WpfIoc \ binに\デバッグ\ netcoreapp3 0.0 \ WpfIoc.dll 成功をビルドします。 0警告(秒) 0エラー(秒) 経過時間00:00:01.63
私たちが達成したいアプリケーションを導き、メインウィンドウのコンストラクタでサービスを注入することである、サービスは、アプリケーションのメインウィンドウにいくつかのテキストを表示するために呼び出されます。
2、我々は優先マイクロソフトExtensionsがDependencyInjectionnugetパッケージの下にインストールされるように、もちろん、あなたも次のような方法が、nuget道の最新プレビュー版への最高のご紹介を追加することができます。
<プロジェクトSDK = " Microsoft.NET.Sdk.WindowsDesktop " > <PropertyGroup> <OUTPUTTYPE> WinExe </ OUTPUTTYPE> <TargetFramework> netcoreapp3。0 </ TargetFramework> <UseWPF> 真 </ UseWPF> </ PropertyGroup> <ItemGroup> <PackageReference含める= " Microsoft.Extensions.DependencyInjection "バージョン= " 3.0.0-preview6.19304.6 " /> </ ItemGroup> <ItemGroup > <ProjectReference =含める" .. \ StoneGenerate.Core \ StoneGenerate.Coreを。 </プロジェクト>
3、ITextServiceインタフェースサービスを作成し、このインターフェイスは、使用のための噴射メインウィンドウ依存クラスで容器に注入されます。
パブリック インターフェースITextService { ストリングGetTextは()。 }
図4は、もちろん、あなたは上記のインターフェイスを実装TextServiceクラスを作成する必要があります。
クラスTextService:ITextService { プライベート 文字列_text。 公共 TextService(文字列テキスト) { _text = テキスト。 } パブリック 文字列GetTextは() { 戻り_text。 } }
5、私たちのApp.xaml.cs IOCコンテナにおける当社のコンフィギュレーションファイル内の次のエントリ、および当社のサービスをチェックし、私はあなたが.NETのコアプロジェクトを行っていると信じて、次のコードは、すべてに非常に精通している必要がありますが、ここにあります説明するのは非常に、地方の私たちの貴重な時間を無駄に。
公共のApp() { VARの serviceCollection = 新しいServiceCollection(); ConfigureServices(serviceCollection)。 _serviceProvider = serviceCollection.BuildServiceProvider()。 } プライベート 無効ConfigureServices(IServiceCollectionサービス) { services.AddSingleton <ITextService>(プロバイダ=> 新しい TextService(" こんにちはWPF、.NETのコア3.0 " )); services.AddSingleton <メインウィンドウ> (); }
6、私たちは、OnStartup App.xaml.csメソッドを書き換えて解析し、それを表示するメインウィンドウ
保護された オーバーライド ボイドOnStartup(StartupEventArgs E) { 塩基.OnStartup(E); VARメイン= serviceProvider.GetRequiredService <メインウィンドウ> (); main.Show(); }
もちろん、これはあなたが以下のコードApp.xmalブートオプションを削除しなければならないことを意味します:
<アプリケーションのx:クラス= " wpfioc.App " のxmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation " のxmlns:X = " http://schemas.microsoft.com/winfx/2006 / XAML " のxmlns:ローカル = " CLR名前空間:wpfioc " スタートアップ = " App_OnStartup " > <Application.Resources> </Application.Resources> </アプリケーション>
1、そして私たちは、テキストメッセージを表示するために、コードXAMLメインウィンドウを変更します。
<ウィンドウX:クラス= " WpfIoc.MainWindow " のxmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation " のxmlns:X = " http://schemas.microsoft.com/winfx/2006 / XAML " のxmlns:D = " http://schemas.microsoft.com/expression/blend/2008 " のxmlns:MC = " http://schemas.openxmlformats.org/markup-compatibility/2006 " のxmlns:ローカル = " CLR名前空間:WpfIoc " MC:無視可能 = " D " タイトル = "メインウィンドウ"高さ= " 450 "幅= " 800 " > <グリッド> <Grid.RowDefinitions> <RowDefinition高さ= " 9 * " /> <RowDefinition高さ= " 1 * " /> </Grid.RowDefinitions> <ラベル名= 「ラベル」コンテンツ= " こんにちは、.NETのコア!"たHorizontalAlignment = " センター" VerticalAlignmentを= "" /> </グリッド> </ウィンドウ]>
図2に示すように、当然のことながら、コードのメインウィンドウCSは、この方法は、着信IOC注入を受け入れることができるように、調整されるべきです。
パブリック 部分 クラスのメインウィンドウ:ウィンドウ { 公共メインウィンドウ(ITextService textService) { のInitializeComponent(); Label.Content = textService.GetText()。 } }
結果
私は、次のステップは、瞬間の奇跡を目撃し、あなたの目を開いて、美しい画像を提供することです、あなた以上の面倒な手順を読んでいると信じて:
上記のように:メインウィンドウの着信IOC射出TextServiceサービスを呼び出し、テキストを正確に表示します。