//父类的申明
public abstract class Persistence<T>
{
public abstract void AddItem(T item);
}
//子类的申明
public class OrdersDAL : Persistence<Orders>
{
public void AddItem(Orders item)
{
//....具体实现
}
}
那么我在用父类的时候必须Persistence<order> p = new OrdersDAL ()
但我想要的是Persistence p = new OrdersDAL()的效果,我不想再父类上指明泛型类型因为子类具体用哪个类型不确定,请问我该怎么做呢?
public abstract class Persistence<T>
{
public abstract void AddItem(T item);
}
//子类的申明
public class OrdersDAL : Persistence<Orders>
{
public void AddItem(Orders item)
{
//....具体实现
}
}
那么我在用父类的时候必须Persistence<order> p = new OrdersDAL ()
但我想要的是Persistence p = new OrdersDAL()的效果,我不想再父类上指明泛型类型因为子类具体用哪个类型不确定,请问我该怎么做呢?
解决方案 »
- c# 如何保证界面上的16进制,存数组时还是16进制?
- C#字符串转datatime出错,代码如下,如果不传参,直接把时间写到方法里就没错误,为什么呢?
- DevExpress.XtraBars.BarButtonItem
- 判断数组重复的不打印出来。帮帮忙
- 请问在C#中怎样对字符进行Base64编码?
- 用c# 怎么实现 pdf格式怎么转换为word ?????????????????????????
- C#获取窗口句柄的方法
- Api精灵 for c# (原来发布过,有人向我要,所以再贴一边,这次的地址绝对可下)
- 试编一段程序出现点问题~public bool InitializeGraphics()
- 关于双DropDownList控件应用问题!!
- (又一难题)----- 还是关于数组的循环的问题,请各位前辈帮帮我 -----
- 关于vs2005创建控件库
考虑使用方法泛型,
class A{
public static T Get<T>()where T:A,new()
{
return new T();
}
}class A1:A{}//use Orders
class A2:A{}//use Product//...
class Test {
void App() {
A a = A.Get<A1>();//return A1 instance
A a2 = A.Get<A2>();//return A2 instance
}
}
{
}
子类的
public void AddItem(Orders item)
{
//....具体实现
}
方法中的参数就变成T item
但在子类的实现中就无法把T强转成order
{
}
public abstract class Persistence<T>:IInterface
{
public abstract void AddItem(T item);
}
他里面又没有AddItem方法
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;using Persistence = WindowsApplication184.Persistence<WindowsApplication184.Orders>;namespace WindowsApplication184
{
//父类的申明
public abstract class Persistence<T>
{
public abstract void AddItem(T item);
} //子类的申明
public class OrdersDAL : Persistence<Orders>
{
override public void AddItem(Orders item)
{
//....具体实现
}
} public class Orders
{
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Persistence p = new OrdersDAL();
}
}
}
OrdersDAL a = new OrdersDAL();
list[0] = a;
Persistence<Orders> b = (Persistence<Orders>)list.Cast<Persistence<string>>().First();这里稍微借用了一下集合以便使用cast<T>的功能如果想更简便的转换的话,请 找一下 sp1234大神的那篇啥 “给对象插上linq的翅膀”