Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# 依赖注入和运行时依赖.NET最佳设计模式_C#_.net_Oop_Design Patterns_Dependency Injection - Fatal编程技术网

C# 依赖注入和运行时依赖.NET最佳设计模式

C# 依赖注入和运行时依赖.NET最佳设计模式,c#,.net,oop,design-patterns,dependency-injection,C#,.net,Oop,Design Patterns,Dependency Injection,我想在这种情况下使用依赖项注入: 我有n个IXMLParser抽象,每个抽象都有一个或多个实现。 我检查数据库中是否有活动的IXMLParser。 对于每个活动的IXMLParser,我实例化了正确的实现(但这是针对DI的?) 那么,做这件事的最佳设计模式是什么呢 您可以注入一个工厂来创建所需的IXMLParser interface IXmlParserFactory { IXMLParser CreateParser(); } 您可以注入一个工厂来创建所需的IXMLParser i

我想在这种情况下使用依赖项注入:

我有n个IXMLParser抽象,每个抽象都有一个或多个实现。 我检查数据库中是否有活动的IXMLParser。 对于每个活动的IXMLParser,我实例化了正确的实现(但这是针对DI的?)


那么,做这件事的最佳设计模式是什么呢

您可以注入一个工厂来创建所需的IXMLParser

interface IXmlParserFactory
{
    IXMLParser CreateParser();
}

您可以注入一个工厂来创建所需的IXMLParser

interface IXmlParserFactory
{
    IXMLParser CreateParser();
}

您可以设置构造函数的格式,将参数作为

范例

Class A
{
  IXMLParsers parser=null;

   A(IXMLParsers p)
   {
     parser=p;
    }
}
     A obj1=new A(new Type1Parser);
     A obj2=new A(new Type2Parser);
     A obj3=new A(new Type3Parser);
现在,您可以根据需要创建不同类型的解析并发送给构造函数

范例

Class A
{
  IXMLParsers parser=null;

   A(IXMLParsers p)
   {
     parser=p;
    }
}
     A obj1=new A(new Type1Parser);
     A obj2=new A(new Type2Parser);
     A obj3=new A(new Type3Parser);

等等……

您可以设置构造函数的格式,将参数作为

范例

Class A
{
  IXMLParsers parser=null;

   A(IXMLParsers p)
   {
     parser=p;
    }
}
     A obj1=new A(new Type1Parser);
     A obj2=new A(new Type2Parser);
     A obj3=new A(new Type3Parser);
现在,您可以根据需要创建不同类型的解析并发送给构造函数

范例

Class A
{
  IXMLParsers parser=null;

   A(IXMLParsers p)
   {
     parser=p;
    }
}
     A obj1=new A(new Type1Parser);
     A obj2=new A(new Type2Parser);
     A obj3=new A(new Type3Parser);

等等……

在我看来,你是在尝试做一个类工厂。在我看来,你是在尝试做一个类工厂。