当我试图实例化我的基类实例时,我得到一个错误:
无法解析带有“failedException”参数的构造函数
我当前没有为基类型使用接口,并且我的类实例正在继承基类型类。我是新来的统一和DI,所以我想它的东西我可能忘了。
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "Unity.Config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
UnityConfigurationSection section = (UnityConfigurationSection)config.GetSection("unity");
IUnityContainer container = new UnityContainer();
section.Containers.Default.Configure(container);
//Throws exception here on this
BaseCalculatorServer server = container.Resolve<BaseCalculatorServer>();
以及Unity.Config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--Unity Configuration-->
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<containers>
<container>
<types>
<type name ="CalculatorServer" type="Calculator.Logic.BaseCalculatorServer, Calculator.Logic" mapTo="Calculator.Logic.CalculateApi, Calculator.Logic"/>
</types>
</container>
</containers>
</unity>
</configuration>
基类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Transactions;
using Microsoft.Practices.Unity;
using Calculator.Logic;
namespace Calculator.Logic
{
public class BaseCalculatorServer : IDisposable
{
public BaseCalculatorServer(){}
public CalculateDelegate Calculate { get; set; }
public CalculationHistoryDelegate CalculationHistory { get; set; }
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
this.Dispose();
}
}
}
实施
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Calculator.Logic;
using System.ServiceModel;
using System.ServiceModel.Configuration;
using Microsoft.Practices.Unity;
namespace Calculator.Logic
{
public class CalculateApi:BaseCalculatorServer
{
public CalculateDelegate Calculate { get; set; }
public CalculationHistoryDelegate CalculationHistory { get; set; }
}
}
是的,基类和实现都在同一个名称空间中,这是一些设计方面的东西,一旦我开始工作就会改变。
哦,还有一个更详细的错误
解析依赖项失败,type=“Calculator.Logic.BaseCalculatorServer”,name=“”。异常消息是:当前生成操作(生成键build key[Calculator.Logic.BaseCalculatorServer,null])失败:无法解析属性“Calculate”的值(策略类型(策略,索引3)