2011-05-29 50 views
0

讓說我有一個類:攔截對象從ninject內核創建不

public class SomeClass { 
    public virtual void InterceptedMethod() 
    { 
     // Do something. 
    } 
} 

我使用Ninject攔截擴展。我想攔截InterceptedMethod。如果我從ninject內核創建了對象,那麼該方法會被攔截。

kernel = InitializeKernel(); 
SomeClass objectFromKernel = kernel.Get<SomeClass>(); 
objectFromKernel.InterceptedMethod(); // this method is intercepted. 

但是,如果我不是從內核創建的對象,該方法是不會被攔截的。

kernel = InitializeKernel(); 
SomeClass objectSelfCreated = new SomeClass(); 
objectSelfCreated.InterceptedMethod(); // this method is NOT intercepted. 

是否可以使用ninject攔截自創對象?如果可能的話,我該怎麼做?

回答

1

在這種情況下,Ninject不能幫助你。您必須自己創建代理或更改設計,以便由Ninject創建該對象。請參閱代理工廠的文檔,瞭解如何執行此操作。