一:第一類需求
接口和類定義如下:
<code>public interface ISample<</code><code>T</code><code>></code>
<code>{}</code>
<code>public class Sample : ISample<</code><code>SomeClass2</code><code>></code>
<code>public class SomeClass2{}</code>
要求用Unity注入。
1:運作時注入
如果是運作時注入,可如下編碼:
<code>using (IUnityContainer container = new UnityContainer())</code>
<code>{</code>
<code> </code><code>ConfigurationManager.GetSection("unity");</code>
<code> </code><code>UnityConfigurationSection.CurrentSection.Configure(container, "containerOne");</code>
<code> </code><code>container.RegisterType<</code><code>ISample</code><code><SomeClass2>, Sample>();</code>
<code> </code><code>var re = container.Resolve<</code><code>ISample</code><code><SomeClass2>>();</code>
<code>}</code>
2:配置檔案配置注入
如果是在配置檔案中配置,配置檔案如下:
<code> </code><code><</code><code>alias</code> <code>alias="ISample`1" type="ISample`1" /></code>
<code> </code><code><</code><code>alias</code> <code>alias="Sample" type="Sample" /></code>
<code> </code><code><</code><code>container</code> <code>name="containerOne"></code>
<code> </code><code><</code><code>register</code> <code>type="ISample`1" name="Sample" mapTo="Sample" /></code>
<code> </code><code></</code><code>container</code><code>></code>
<code></</code><code>unity</code><code>></code>
編碼如下:
<code> </code><code>var re = container.Resolve<</code><code>ISample</code><code><SomeClass2>>("Sample");</code>
二:第二類需求
<code>public class Sample<</code><code>T</code><code>> : ISample<</code><code>T</code><code>></code>
<code>{ }</code>
<code> </code><code>container.RegisterType<</code><code>ISample</code><code><SomeClass2>, Sample<</code><code>SomeClass2</code><code>>>();</code>
<code> </code><code><</code><code>alias</code> <code>alias="Sample`1" type="Sample`1" /></code>
<code> </code><code><</code><code>register</code> <code>type="ISample`1" name="Sample" mapTo="Sample`1" /></code>
三:總結
可以看到,如果是運作時注入,那麼Resolve方法中,必須指定泛型的類型。
如果是在配置檔案中,為了表明這是個帶泛型參數的接口或者類,則需要為其指定字尾“`”。
本文轉自最課程陸敏技部落格園部落格,原文連結:http://www.cnblogs.com/luminji/archive/2011/12/15/2289062.html,如需轉載請自行聯系原作者