Pregunta

Tengo la siguiente situación.

Tenemos un método privado donde quiero agregar la política utilizando un controlador de mano.Este método se llama por unos pocos métodos públicos diferentes que se definen en mi interfaz.Estoy instantáneamente al repositorio en una fábrica, donde devuelvo el objeto envuelto.Hasta ahora, no puedo obtener la póliza trabajando en mi método privado.¿Estoy envolviendo el objeto de una manera incorrecta?También intenté crear el objeto envuelto al instanciar directamente un objeto de repositorio.Hasta ahora, solo he agregado el atributo a los métodos públicos, en ese caso agregué el atributo en la interfaz que funciona correctamente.Espero que alguien tenga una pista sobre cómo hacer este trabajo.

Vea mi implementación a continuación:

// 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);
}

¿Fue útil?

Solución

obtuvo ayuda sobre este tema del soporte de Avanade en CodePlex.Me dijeron que solo podías interceptar métodos / propiedades públicas.También me dieron el enlace a las limitaciones del bloque de inyección de políticas de la biblioteca empresarial, que se puede encontrar en MSDN en: http://msdn.microsoft.com/en-us/library/ff650508.aspx#intro_limitations

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top