根据现有类型定义自己的TYPE

时间:2009-08-06 13:02:16

标签: c# types

如何引用TYPE,以便随后使用myreference名称...以最简单的形式......

MyInt - 源自int

然后,在其他地方,我会参考MyInt。踢球者是我需要在类别定义中分别对应的“#define”进行子类化,并且可以是不同的类型。实际意图是

MyTypeSQLCmd = OleDbCommand
OR
MyTypeSQLCmd = SQLiteCommand

我的子类只会引用,并且能够创建一个新的MyTypeSQLCmd();

---让我详细说明一下。

我有一个连接到OleDB类型数据库的类。 我有另一个连接到SQLite数据库的类。

我有另一个类,它将从上面的内容中派生出来,但会有其他功能。所以,我不想知道我将连接到哪个后端,而不是像以前那样拥有IF ...

if(connectingToSQLite)
  MyCmd = new SQLiteCommand();
else
  MyCmd = new OleDbCommand();

因为随后,我需要的常用方法是相同的引用,例如

MyCmd.Parameters.Add(...)

所以,我不能将变量预先声明为一个“类型”或另一个如

OleDbCommand MyCmd; SQLiteCommand MyCmd;

我只想要一个实例,所以我希望得到一种可以接受的“别名”类型,并允许继续而不会出现编译错误。

4 个答案:

答案 0 :(得分:2)

你真的不是在寻找一个界面,即IDbCommand

答案 1 :(得分:1)

您可以从中继承或使用using语句。

using SomeClass = SomeOtherClass;

答案 2 :(得分:1)

使用泛型:

class SubClass<MyTypeSQLCmd> where MyTypeSQLCmd : IDbCommand, new {
   ...
}

现在,类可以创建该类型的实例,并使用IDbCommand接口中的所有方法。您可以为任何数据库命令类型创建类的实例。

答案 3 :(得分:0)

如果您正在寻找类似于C typedef的内容,那么虽然可以在文件顶部使用using语句,但它通常不是最理想的解决方案。像这样的情况的想法是“编程到界面”。也就是说,您找到一个超类或接口来实现您正在寻找的功能(在这种情况下分别为System.Data.Common.DbCommandSystem.Data.IDbCommand)并对其进行编程。然后实例化更具体的类型(如SqlCommandOleDbCommand,代表要使用的特定实现。