namespace ConsoleApplication1 { public class Program { private ITestA A; public Program(ITestA B) { A = B; } static void Main(string[] args) { //TestA A = new TestA(); var ss = A.F1("0"); //报错 , } } public interface ITestA //接口 { string F1(string name); } public class TestA: ITestA //继承接口 必须实现接口中的方法 { public string F1(string name) { return "0000000"; } } }
大神295 970 553: 一般有ninject autofac 还有其他的,推荐用autofac
![](https://images2018.cnblogs.com/blog/1180752/201804/1180752-20180419164022432-719092032.png)
static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterType<DatabaseManager>(); // 该类包含 依赖项 IDatabase 接口 builder.RegisterType<SqlDatabase>().As<IDatabase>(); //调用哪个接口子类中的方法 var container = builder.Build(); DatabaseManager manager = container.Resolve<DatabaseManager>(); //创建对象 manager.Search("SELECT * FORM USER"); DatabaseManager test = new DatabaseManager(new SqlDatabase()); //创建对象时 对构造函数传递一个参数 test.Search("SELECT * FORM USER"); }
// new DatabaseManager(new SqlDatabase()) 等价 container.Resolve<DatabaseManager>(); //创建对象