J'utilise Ninject comme conteneur DI dans une application Silverlight. Maintenant, j'étends l'application pour supporter l'interception et j'ai commencé à intégrer l'extension DynamicProxy2 pour Ninject. J'essaye d'intercepter l'appel aux propriétés sur un ViewModel et finissant par obtenir l'exception suivante:Problème lors de l'interception de la propriété dans l'application Silverlight
"La tentative d'accès à la méthode a échoué: System.Reflection.Emit.DynamicMethod..ctor (System.String, System.Type, System .Type [], System.Reflection.Module, Boolean) "
Cette exception est levée lorsque la méthode invocation.Proceed() est appelée. J'ai essayé deux implémentations de l'intercepteur et ils ont tous deux manquai
public class NotifyPropertyChangedInterceptor: SimpleInterceptor
{
protected override void AfterInvoke(IInvocation invocation)
{
var model = (IAutoNotifyPropertyChanged)invocation.Request.Proxy;
model.OnPropertyChanged(invocation.Request.Method.Name.Substring("set_".Length));
}
}
public class NotifyPropertyChangedInterceptor: IInterceptor
{
public void Intercept(IInvocation invocation)
{
invocation.Proceed();
var model = (IAutoNotifyPropertyChanged)invocation.Request.Proxy;
model.OnPropertyChanged(invocation.Request.Method.Name.Substring("set_".Length));
}
}
Je veux appeler OnPropertyChanged méthode sur le ViewModel lorsque la valeur de la propriété est définie. J'utilise l'interception basée sur les attributs. J'ai testé l'implémentation avec une application console et ça marche.
J'ai également noté dans l'application console tant que j'avais Ninject.Extensions.Interception.DynamicProxy2.dll dans le même dossier que Ninject.dll je n'ai pas eu à charger explicitement DynamicProxy2Module dans le noyau, où j'ai dû charger explicitement pour l'application Silverlight comme suit:
IKernel kernel = new StandardKernel(new DIModules(), new DynamicProxy2Module());
Pourriez-vous nous aider s'il vous plaît? Merci