Como adicionar injeção de política a um método privado
-
13-11-2019 - |
Pergunta
Estou tendo a seguinte situação.
Temos um método privado onde desejo adicionar injeção de política usando um handlerAttribute.Este método é chamado por alguns métodos públicos diferentes definidos em minha interface.Estou instanciando o repositório em uma fábrica, onde retorno o objeto empacotado.Até agora não consegui fazer a injeção de política funcionar no meu método privado.Estou embrulhando o objeto de maneira errada?Também tentei criar o objeto empacotado instanciando diretamente um objeto de repositório.Até agora adicionei o atributo apenas aos métodos públicos, nesse caso adicionei o atributo na interface que está funcionando corretamente.Espero que alguém tenha uma idéia de como fazer isso funcionar.
Veja minha implementação abaixo:
// My factory implementation
public static ICacheRepository Repository()
{
return PolicyInjection.Create<CacheRepository, ICacheRepository>();
}
// My repository
public class CacheRepository : MarshalByRefObject, ICacheRepository
{
public void Add(string name)
{
Check(name);
}
public void Update(string name)
{
Check(name);
}
public void Delete(string name)
{
Check(name);
}
[NotNull] // <= HandlerAttribute
private bool Check(string name)
{
return true;
}
}
// My CacheRepository interface.
public interface ICacheRepository
{
void Add(string name);
void Update(string name);
void Delete(string name);
}
Solução
Recebi ajuda sobre esse problema do suporte da Avanade no CodePlex.Eles me disseram que você só poderia interceptar métodos/propriedades públicas.Eles também me deram o link para as limitações do Enterprise Library Policy Injection Block, que pode ser encontrado no MSDN em: http://msdn.microsoft.com/en-us/library/ff650508.aspx#intro_limitations