【发布时间】:2015-11-21 00:51:05
【问题描述】:
我们正在构建一个使用 PolicyInjection 来执行某些任务的框架。我们为此使用属性。这段代码是在单独的框架解决方案中编写的。
Out CallHandler 可能如下所示:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Method)]
public class MyCallHandlerAttribute : HandlerAttribute
{
...
}
在 Unity 中我们有:
namespace Microsoft.Practices.Unity.InterceptionExtension
{
public abstract class HandlerAttribute : Attribute
{
...
}
}
在客户端解决方案中,我们有一个使用 Unity 注册的调用处理程序 (MyCallHandler)。要在调用处理程序中执行代码,我们需要在模型的类/方法/属性上方添加属性:
[MyCallHandler(params[])]
public class MyModel : IMyModel
{
...
}
现在的问题是,要使用 MyCallHandler,我们需要对 PolicyInjection DLL 的引用,以便编译器了解 HandlerAttribute 是一个属性。如果没有引用,我们会收到 'MyCallHandler' is not an attribute class 警告(编译时出错)。
我们如何以这种方式实现这一点,而不需要在我们的客户端解决方案中引用 Unity DLL,而只需要我们的框架 DLL?
【问题讨论】:
标签: c# unity-container