Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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#_Ado.net - Fatal编程技术网

C# 我可以将类用作.NET中的对象来创建该类的实例吗?

C# 我可以将类用作.NET中的对象来创建该类的实例吗?,c#,ado.net,C#,Ado.net,我正在编写一个相当简单的程序,它可以连接到几种不同类型的数据源,包括文本文件和各种数据库。我决定将这些连接类型中的每一种实现为一个从我称为iConnection的接口继承的类。例如,我有TextConnection、MySQLConnection和c。。。作为班级 在另一个静态类中,我有一个字典,其中包含这些连接的可读名称作为键。对于每个字典条目的值,我需要类本身。这样,我可以做以下事情: newConnection = new dict[connectionTypeString](); 有没

我正在编写一个相当简单的程序,它可以连接到几种不同类型的数据源,包括文本文件和各种数据库。我决定将这些连接类型中的每一种实现为一个从我称为iConnection的接口继承的类。例如,我有TextConnection、MySQLConnection和c。。。作为班级

在另一个静态类中,我有一个字典,其中包含这些连接的可读名称作为键。对于每个字典条目的值,我需要类本身。这样,我可以做以下事情:

newConnection = new dict[connectionTypeString]();

有没有办法做到这一点?我对C相当陌生,因此我非常感谢您的帮助。

我假设您已经意识到.NET Framework已经有了一个接口和相应的实现程序,它们已经完成了您似乎要做的大部分工作

不管怎样,你要找的是。工厂方法是一种基于用户提供的类型参数(通常是枚举)负责创建特定接口的具体实例的方法


虽然有许多不同的方法来实现该模式,但还是有很多不同的方法。

我假设您已经意识到.NET Framework已经有了一个接口和相应的实现者,它们已经完成了您似乎要做的大部分工作

不管怎样,你要找的是。工厂方法是一种基于用户提供的类型参数(通常是枚举)负责创建特定接口的具体实例的方法


虽然有许多不同的方法来实现该模式,但还是有很多不同的方法。

请查看System.Data.Common命名空间中的DbProviderFactory类。您可以使用它为给定的提供者创建连接、命令、数据适配器等。例如:

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
DbConnection connection = factory.CreateConnection();

其中providerName类似于System.Data.SqlClient或System.Data.OleDb等。请查看System.Data.Common命名空间中的DbProviderFactory类。您可以使用它为给定的提供者创建连接、命令、数据适配器等。例如:

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
DbConnection connection = factory.CreateConnection();
其中providerName类似于System.Data.SqlClient或System.Data.OleDb等。

模式的另一个变体。只需维护一个类型列表:

Dictionary<string, Type> pizzas = new Dictionary<string, Type>
{
    { "HamAndMushroomPizza", typeof(HamAndMushroomPizza) },
    { "DeluxePizza", typeof(DeluxePizza) },
    { "HawaiianPizza", typeof(HawaiianPizza) }
};
这种方法的吸引力在于,当您无法预先确定可以拥有多少种比萨饼时,您就无法在每次出现新类型的比萨饼时重写比萨饼factoryswitch语句。请考虑在运行时加载DLL,这是另一种模式变体。只需维护一个类型列表:

Dictionary<string, Type> pizzas = new Dictionary<string, Type>
{
    { "HamAndMushroomPizza", typeof(HamAndMushroomPizza) },
    { "DeluxePizza", typeof(DeluxePizza) },
    { "HawaiianPizza", typeof(HawaiianPizza) }
};
这种方法的吸引力在于,当您无法事先确定可以拥有多少种比萨饼时,您就无法在每次有新类型的比萨饼时重写比萨饼factoryswitch语句。请考虑在运行时加载DLL。你可以用它做一些非常酷的DI,或者。

去看看。你可以用这个或者做一些很酷的DI