nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Service LocatorとDependency InjectionパターンとDI Container

本エントリーでは次の点を整理したいと思います。

  • ServiceLocatorパターンとは何か?
  • Dependency Injection(以降DI)パターンとは何か?
  • DI Containerとは何か?
  • これらを使うと何がうれしいのか?
  • ServiceLocatorとDI何が違うのか?
  • ServiceLocatorとDIどちらを使うべきか?
続きを読む

オブジェクトのライフタイム パターンを整理してみた

システムやアプリケーションを構築していると、様々なパターンのオブジェクトの生成~消滅に遭遇します。

  • ユーザーが何らかのアクションを起こし、それに伴うインタラクションが完了するまでの間だけ生存するオブジェクト。
  • アプリケーション起動から終了までの間、常に生存するオブジェクト。

私は常々、オブジェクトの生成~消滅までのライフタイムは、いくつかのパターンに分類できると考えてきました。そのパターンはユーザーインターフェースのアーキテクチャが異なっても、概ね類似したパターンの内に収束すると考えています。スマートデバイスのネイティブ実装でも、Windowsアプリでも、Webアプリでも、です。

そこで改めてオブジェクトの生成~消滅までのライフタイム パターンをまとめ、その留意点や基本原則について、自分の経験に基づいて整理してみました。異論・反論もちろんあると思います。きっとそれは本エントリーを洗練化する一助になると思いますので、ぜひコメントなりTwitter(@nuits_jp) なりにご意見ください。

なお本エントリーのライフタイムの名称は完全に(もしくは一部は)オレオレ用語で一般的な概念とは限りませんので、取り扱いにご注意ください。

続きを読む

Prism 6.3の変更点 その1 Pris.Core

Prism 6.3がリリースされてからすでに2カ月。書こう書こうと思っていたのですが、後回しにしまくっていたのでここに変更点をまとめます。
for Xamarin.Formsの範囲が対象となります。

と、言っておきながら、本エントリーではWPFおよびUWPとも共通のPrism.Coreの変更点です。
なお変更点の詳細は、次の記事と実際のソースの変更に基づいています。

http://brianlagunas.com/prism-6-3-release/
https://github.com/PrismLibrary/Prism/wiki/Release-Notes-6.3.0

続きを読む

.NET StandardプロジェクトでInternalsVisibleToを設定する方法

.NETには、例えばinternalなクラスやメソッドのUnitTestをUnitTestプロジェクトから呼び出す仕組みとして、「InternalsVisibleTo」という属性があります。
従来の.NET Frameworkプロジェクトでは、プロジェクト作成時にPropertiesの下にAssemblyInfo.csが作成されその中に定義する方法が一般的でした。
しかし、.NET StandardにはAssemblyInfo.csが存在しません。

f:id:nuitsjp:20170614143527p:plain

ここでは.NET StandardプロジェクトでInternalsVisibleToを設定する方法を紹介します。

続きを読む