我有一個最近開始使用Ninject的WinForms應用程序。大多數教程Ninject的顯示設置爲自動裝配這樣的:自動裝配與Ninject
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<ITaxCalculator>()
.To<TaxCalculator>()
.WithConstructorArgument("rate", .2M);
var tc = kernel.Get<ITaxCalculator>();
Assert.Equal(20M, tc.CalculateTax(100M));
}
如果你打算在啓動一個簡短的腳本執行這一類,它是偉大的,但我不知道如何使用這些對象我的其他類和庫在應用程序中。我很好奇Ninject是否可以在this article處理類似於Spring的依賴關係。
package testbean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import writer.IWriter;
@Service
public class MySpringBeanWithDependency {
private IWriter writer;
@Autowired
public void setWriter(IWriter writer) {
this.writer = writer;
}
public void run() {
String s = "This is my test";
writer.writer(s);
}
}
然後你就可以在XML中指定哪個實例注入IWriter。然後運行該代碼,這是所有需要:
package main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import testbean.MySpringBeanWithDependency;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("META- INF/beans.xml");
BeanFactory factory = context;
MySpringBeanWithDependency test = (MySpringBeanWithDependency) factory
.getBean("mySpringBeanWithDependency");
test.run();
}
}
藉助於Spring,它可以自動創建和注入IWriter依賴性,因此您不必擔心如何得到它的應用程序的其餘部分。使用目前的Ninject教程,我一直無法找到辦法做到這一點,並採取了將對象存儲到另一個對象,然後調用它,這不是最好的方式來做到這一點。
我已經看到了一種自動裝載與Ninject依賴關係的方法,但沒有找到對這個特定問題的答案。任何幫助是極大的讚賞。
非常感謝您的幫助!將檢查出擴展DLL。 – Rachael