0

Скажем, у меня есть интерфейс:Исключить явный метод интерфейса с PostSharp атрибут групповой

namespace MyCompany.Security 
{ 
    public interface IMySecurable 
    { 
     string GetContext(); 
    } 
} 

который реализуется ряд классов, например,

namespace MyCompany.Repositories 
{ 
    using System.Collections.Generic; 
    using MyCompany.Security; 

    public class MyRepository : IMySecurable 
    { 
     public IEnumerable<string> GetAll() 
     { 
      // Repository logic 
     } 

     string IMySecurable.GetContext() 
     { 
      // Logic here 
     } 
    } 
} 

Я использую атрибут PostSharp применить мультивещани, мой аспект (MySecurityAspect) для каждого класса в пространстве имен.

[assembly: MySecurityAspect(AttributeTargetTypes = "MyCompany.Repositories.*", AttributePriority = 1)] 

Однако я не могу понять, как исключить реализации методов явного интерфейса, т.е.

string IMySecurable.GetContext() 
{ 
    // Logic here 
} 

Я попытался после документации here, используя эту инструкцию:

[assembly: MySecurityAspect(AttributeTargetMembers = "GetContext", AttributeExclude = true, AttributePriority = 2)] 

Однако это не работает.

Как я могу исключить методы с использованием многоадресной рассылки, когда они являются явными реализациями интерфейса?

+0

Вы пытались добавить атрибуты AttributeTargetType к атрибуту exclude? –

ответ

0

http://support.sharpcrafters.com/discussions/questions/306-suppress-some-exception-logging-in-diagnostic-toolkit-configuration Согласно

атрибута с исключающим установлено на истинные эффекты только то, что было обработан до точки возникновения исключения, т.е. исключить эффект будет только атрибуты, имевшие место до исключения.

Иными словами, порядок атрибутов важен.

Если это не поможет, задайте вопрос напрямую по телефону http://support.sharpcrafters.com.

BTW: Я обнаружил, что для определения аспектов Postharp в файле PSProj более гибко, чем добавление атрибутов в код.

+0

Спасибо за предложение, хотя это действительно не помогает. У меня есть запрос на поддержку open [здесь] (http://support.sharpcrafters.com/discussions/questions/521-override-base-class-aspect-in-derived-class). –