.NET AOP(MEF框架异常问题)
我1个工程 有4个项目
分别为
1:MEFInterface(接口)
就一个接口
public interface ICalculator
{
int Add(int a, int b);
}
2:MEFInfrastructure(实现接口)
[Export("MEFInterface.ICalculator", typeof(ICalculator))]
public class Calculator
: ICalculator
{
public int Add(int a, int b)
{
return a + b;
}
}
3:MEFRepository(通过MEF 依赖注入)
public class MyCalculator
{
[Import("MEFInterface.ICalculator", typeof(ICalculator))]
private ICalculator _calculato;
public int Add(int a, int b)
{
return _calculator.Add(a, b);
}
}
4:MEFsln
class Program
{
private static CompositionContainer _container;
static void Main(string[] args)
{
var assemblyCatalog = new AssemblyCatalog(typeof(MEFRepository.MyCalculator).Assembly);
_container = new CompositionContainer(assemblyCatalog);
MyCalculator calculator = new MyCalculator();
_container.ComposeParts(calculator);
Console.WriteLine(calculator.Add(1, 3));
Console.ReadLine();
}
}
当运行起来抛出
“System.ComponentModel.Composition.ChangeRejectedException”类型的未经处理的异常在 System.ComponentModel.Composition.CodePlex.dll 中发生
如果我把上面的
MEFInterface
MEFInfrastructure
MEFRepository
合并到一个项目中就不会抛出错误。
调试的时候发现
public class MyCalculator
{
[Import("MEFInterface.ICalculator", typeof(ICalculator))]
private ICalculator _calculator ;//此行报错,不知道怎么修改。请解决上面方案里面代码问题
public int Add(int a, int b)
{
return _calculator.Add(a, b);
}
}
请不要动上面4个项目框架结构,我需要的是解决问题