mvc项目里,定义的类里
public class UserRepository : IRepository<UserInfo, string>
{
 [Dependency]
        public QueryToolEntities ctx { get; set; }
}QueryToolEntities是EF派生类
 public partial class QueryToolEntities : DbContext
{
}想问一下,为什么在controller的构造函数里实现了依赖注入之后,这个ctx就已经被实例化了呢,正常的理解不是应该要定义成接口才可以实现属性的依赖注入吗?麻烦大虾答疑解惑

解决方案 »

  1.   

    因为他用了 [Dependency]注解的关系吧。
    你看看AssemblyInfo的配置
    https://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(System.Runtime.CompilerServices.DependencyAttribute);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true
      

  2.   

    这个要看本质嘛。依赖注入的关键,在于依赖抽象。
    那么无论是基类还是接口类,都能达到抽象。
    所以就无所谓是定义接口还是定义基类了。
    换句话说 Interface a=new A();Interface a=new B();  这样使得2个派生类实例化。和BaseClass a=new A();BaseClass a=new B();  道理上是一样的。
      

  3.   

    这个要看本质嘛。依赖注入的关键,在于依赖抽象。
    那么无论是基类还是接口类,都能达到抽象。
    所以就无所谓是定义接口还是定义基类了。
    换句话说 Interface a=new A();Interface a=new B();  这样使得2个派生类实例化。和BaseClass a=new A();BaseClass a=new B();  道理上是一样的。谢谢斑竹