Test
<pre style="background:#2a211c;color:#bdae9d"><span style="color:#43a8ed;font-weight:700">class </span>Warrior
{
<span style="color:#43a8ed;font-weight:700">private</span> IWeapon _weapon;
<span style="color:#43a8ed;font-weight:700">public</span> <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Warrior</span></span>(<span style="color:#318495">IWeapon</span> <span style="color:#318495">weapon</span>)
{
<span style="color:#318495">_weapon</span> <span style="color:#687687">=</span><span style="color:#318495"> weapon</span>;
}
<span style="color:#43a8ed;font-weight:700">public</span> <span style="color:#687687">void</span> <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Fight</span></span>()
{
_weapon.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Use</span></span>();
}
}
<span style="color:#43a8ed;font-weight:700">class </span>SingleWarrior
{
<span style="color:#43a8ed;font-weight:700">private</span> IWeapon _weapon;
<span style="color:#43a8ed;font-weight:700">public</span> IWeapon Weapon
{
<span style="color:#43a8ed;font-weight:700">get</span>
{
<span style="color:#43a8ed;font-weight:700">if</span> (<span style="color:#318495">_weapon</span> <span style="color:#687687">==</span><span style="color:#585cf6;font-weight:700"> null</span>)
{
<span style="color:#318495">_weapon</span> <span style="color:#687687">=</span> ServiceLocator.Current.<span style="color:#318495">GetInstance</span><span style="color:#687687"><</span><span style="color:#318495">IWeapon</span><span style="color:#687687">></span>();
}
<span style="color:#43a8ed;font-weight:700">return</span> _weapon;
}
}
<span style="color:#43a8ed;font-weight:700">public</span> <span style="color:#687687">void</span> <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Fight</span></span>()
{
Weapon.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Use</span></span>();
}
}
<span style="color:#43a8ed;font-weight:700">class </span>App_Start
{
internal static UnityContainer <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">RegTypesInContainer</span></span>()
{
var <span style="color:#318495">container</span> <span style="color:#687687">=</span><span style="color:#43a8ed;font-weight:700"> new </span><span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">UnityContainer</span></span>();
container.<span style="color:#318495">RegisterType</span><span style="color:#687687"><</span><span style="color:#318495">IWeapon</span>,<span style="color:#318495"> Sword</span><span style="color:#687687">></span>();
<span style="color:#43a8ed;font-weight:700">return</span> container;
}
internal static <span style="color:#687687">void</span> <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">RegTypesInServiceLocator</span></span>()
{
var <span style="color:#318495">Container</span> <span style="color:#687687">=</span><span style="color:#43a8ed;font-weight:700"> new </span><span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">UnityContainer</span></span>();
Container.<span style="color:#318495">RegisterType</span><span style="color:#687687"><</span><span style="color:#318495">IWeapon</span>,<span style="color:#318495"> Bazooka</span><span style="color:#687687">></span>();
var <span style="color:#318495">MySingleton</span> <span style="color:#687687">=</span><span style="color:#43a8ed;font-weight:700"> new </span><span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">UnityServiceLocator</span></span>(<span style="color:#318495">Container</span>);
ServiceLocator.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">SetLocatorProvider</span></span>(() <span style="color:#687687">=</span><span style="color:#687687">></span><span style="color:#318495"> MySingleton</span>);
}
}
<span style="color:#43a8ed;font-weight:700">class </span>_PROGRAM_
{
static <span style="color:#687687">void</span> <span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Main</span></span>(<span style="color:#7290d9;font-weight:700">string</span>[] <span style="color:#318495">args</span>)
{
UnityContainer <span style="color:#318495">container</span> <span style="color:#687687">=</span> App_Start.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">RegTypesInContainer</span></span>();
var <span style="color:#318495">samurai</span> <span style="color:#687687">=</span> container.<span style="color:#318495">Resolve</span><span style="color:#687687"><</span><span style="color:#318495">Warrior</span><span style="color:#687687">></span>();
samurai.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Fight</span></span>();
//<span style="color:#318495"> or</span> :
App_Start.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">RegTypesInServiceLocator</span></span>();
SingleWarrior <span style="color:#318495">warriorSingle</span> <span style="color:#687687">=</span><span style="color:#43a8ed;font-weight:700"> new </span><span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">SingleWarrior</span></span>();
warriorSingle.<span style="color:#7290d9;font-weight:700"><span style="color:#ff9358;font-weight:700">Fight</span></span>();
}
}
</pre>