我有以下代码,当我尝试运行它时,我可以看到BrokerProvider没有被解析。下面是我的代码:
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
UnityConfigurationSection section = (UnityConfigurationSection) ConfigurationManager.GetSection("unity");
section.Containers.Default.Configure(container);
new TestBroker().RunTestBroker();
}
class TestBroker
{
private IBrokerProvider brokerProvider;
public void RunTestBroker()
{
List<IPortfolio> portfolios = BrokerProvider.GetPortfolios();
}
[Dependency]
public IBrokerProvider BrokerProvider
{
get { return brokerProvider; }
set { brokerProvider = value; }
}
}相关配置
<unity>
<typeAliases>
<typeAlias alias="string" type="System.String, mscorlib" />
<typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<typeAlias alias="IBrokerProvider" type="PA.Common.Interfaces.IBrokerProvider, PA.Common" />
<typeAlias alias="PManager" type="PA.BrokerProviders.PManager, PA.BrokerProviders" />
</typeAliases>
<containers>
<container>
<types>
<type type="IBrokerProvider" mapTo="PManager">
<lifetime type="singleton" />
</type>
</types>
</container>
</containers>
</unity>另一个问题:我是否需要在我想要使用unity的每个其他类中重复main下相同的3行代码,或者设置一次就足够了?
发布于 2010-01-15 12:36:54
这是因为我们直接通过调用operator new来创建TestBroker:
new TestBroker().RunTestBroker();为了让unity解决你的依赖,你需要这样调用框架:
var broker = container.Resolve<TestBroker>();IUnityContainer接口将为您完成所有工作--即将类型解析为实例。你只需要创建它一次,然后在你需要的任何地方传递给应用程序。
https://stackoverflow.com/questions/2069530
复制相似问题