Укажите политику для допустимого типа
Предположим, у меня есть следующий код:
class Program
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<Interceptable>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior<PolicyInjectionBehavior>());
container
.Configure<Interception>()
.AddPolicy("PolicyName")
.AddMatchingRule(new CustomAttributeMatchingRule(typeof(SomeAttribute), true))
.AddMatchingRule(new PropertyMatchingRule("*", PropertyMatchingOption.Set))
.AddCallHandler<PropertySetterCallHandler>();
.Interception
.AddPolicy("AnotherPolicyName")
.AddMatchingRule(new CustomAttributeMatchingRule(typeof(SomeOTHERAttribute), true))
.AddMatchingRule(new PropertyMatchingRule("*M", PropertyMatchingOption.Set))
.AddCallHandler<ANOTHERPropertySetterCallHandler>();
var ic = container.Resolve<Interceptable>();
//property setter is invoked - the matching rules from BOTH the policies will be tried
ic.Property = 2;
Console.ReadLine();
}
class Interceptable
{
public virtual int Property { get; [SomeAttribute]set; }
}
}
То, как он настроен сейчас, каждый раз, когда я разрешаю экземпляр Interceptable и вызываю для него публичный виртуальный метод, пробуются 4 соответствующих правила (из обеих политик).
Это может создать накладные расходы в реальном приложении. Я хотел бы указать, что я хочу, чтобы только (например) политика "PolicyName" применялась к экземплярам класса Interceptable. Есть какой-либо способ сделать это?
Спасибо