C# 依赖注入

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  
 
       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>();  //创建对象
 
 
原文地址:https://www.cnblogs.com/enych/p/8884184.html