定义基于自己的类型上的现有类型
我怎样才能让一个类型的引用,所以我可以用myreference名字后来......在其最简单的形式...定义基于自己的类型上的现有类型
敏 - 源自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;
我只想要一个实例,所以我希望得到一种“别名”类型,它将被接受并允许在没有编译器错误的情况下继续。
您可以从中继承或使用using
声明。
using SomeClass = SomeOtherClass;
使用泛型:
class SubClass<MyTypeSQLCmd> where MyTypeSQLCmd : IDbCommand, new {
...
}
现在的类可以创建类型的实例,并使用在所有的方法IDbCommand接口。您可以为任何数据库命令类型创建类的实例。
+1,这种方法效果很好。我也使用它... – Steve 2009-08-06 14:57:39
如果您正在寻找类似于C typedef
的东西,那么虽然文件顶部有using
语句可能,但它通常不是最理想的解决方案。这种情况的想法是“编程到界面”。也就是说,您可以找到一个超类或接口来实现您正在查找的功能(在本例中分别为System.Data.Common.DbCommand
或System.Data.IDbCommand
)并对其进行编程。然后,您实例更具体类型(如SqlCommand
或OleDbCommand
表示具体实现使用。
通过“转到定义”了继承链,我想我明白你的意思,并认为这会工作。 ..如果成功,我会标志。 – DRapp 2009-08-06 13:21:34