Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取使用依赖项注入的类的实例_C#_.net_Dependency Injection_Factory Pattern - Fatal编程技术网

C# 获取使用依赖项注入的类的实例

C# 获取使用依赖项注入的类的实例,c#,.net,dependency-injection,factory-pattern,C#,.net,Dependency Injection,Factory Pattern,我一直在读关于依赖注入的书,我已经掌握了基础知识。互联网上的大多数例子都解释了这一点: public class MyClass { private IDependency _dependency; public MyClass(IDependency dependency) { _dependency = dependency; } } 这样,我们通过构造函数注入依赖项。但我不认为继续写下去是个好主意: var myClassInstance

我一直在读关于依赖注入的书,我已经掌握了基础知识。互联网上的大多数例子都解释了这一点:

public class MyClass
{
    private IDependency _dependency;

    public MyClass(IDependency dependency)
    {
        _dependency = dependency;
    }
}
这样,我们通过构造函数注入依赖项。但我不认为继续写下去是个好主意:

var myClassInstance = new MyClass(someArgument);
所有这些都贯穿于代码中。我应该使用工厂模式来获取实例吗

public static class MyClassFactory
{
    private static IDependency dependency = DependencyFactory.GetInstance();

    public static MyClass GetInstance()
    {
        return new MyClass(dependency);
    }
}
这是路吗


我知道使用DI容器可以解决这个问题,但在使用DI容器之前,我想学习如何在代码中加入依赖项注入。

依赖项注入只是一种模式,您可以在代码的第一部分(构造函数注入)实现它

现在,您可以手动配置依赖项(就像在第一个示例中所做的那样),或者使用一个框架来帮助您(在幕后,它会做或多或少相同的事情)

该模式的价值不在于避免写下面的内容

var myClassInstance=新的MyClass(dependencyObject)


但是要将软件的各个层解耦,否则这些层就会被耦合起来。

是的,工厂将是一条出路。事实上,DI容器实际上只是一个美化的工厂,可以通过xml(例如spring)或代码(对于类似结构图的东西)进行配置,还是在它自己的文件中?@hattenn-通常我会把它放在它自己的文件中。