.net 泛型如何在原来类上加?

xy773633 2011-06-20 11:49:57
请问 .net 牛人:
我当前有一个类如下,
public partial class Order
{
private string orderid;
public string Orderid
{
get { return orderid; }
set { orderid = value; }
}

private string ordername;
public string Ordername
{
get { return ordername; }
set { ordername = value; }
}
}


我现在想在这个类中加一个泛型字段比如:
public partial class Order<T>
{
private T[] locationname;

public T[] Locationname
{
get { return locationname; }
set { locationname = value; }
}
}

这个 Locationname字段如何加到 Order 这个类中?因为我现在实例化 Order 不能引用到 Locationname,
如何让这两个类合并为一个?Order 是自动生成的,Order<T> 是我需要对原来的类进行扩展,
请大家指教啊!
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
winner2050 2011-06-20
  • 打赏
  • 举报
回复
这样都能实现,基本不用干活了。
xy773633 2011-06-20
  • 打赏
  • 举报
回复
你好:wuyazhe
请问有什么好的解决办法吗
兔子-顾问 2011-06-20
  • 打赏
  • 举报
回复
如果能实现,你认为微软还会写List<T>么?直接吧ArrayList扩展了不就行了?
xy773633 2011-06-20
  • 打赏
  • 举报
回复
public partial class Order
{
private string orderid;
public string Orderid
{
get { return orderid; }
set { orderid = value; }
}

private string ordername;
public string Ordername
{
get { return ordername; }
set { ordername = value; }
}

private object[] locationname;

public object[] Locationname
{
get { return locationname; }
set { locationname = value; }
}
}
xy773633 2011-06-20
  • 打赏
  • 举报
回复
Object 的写法:

public partial class Order
{
private string orderid;
public string Orderid
{
get { return orderid; }
set { orderid = value; }
}

private string ordername;
public string Ordername
{
get { return ordername; }
set { ordername = value; }
}

private object[] locationname;

public object[] Locationname
{
get { return locationname; }
set { locationname = value; }
}
}
xy773633 2011-06-20
  • 打赏
  • 举报
回复
如果不用泛型,对Order类进行字段的扩展是可以的,如果用Object代替<T>,可以实现,但是用Object,在调用的时候又需要对将Object转换为其它类型,就是说要for循环一个一个来强制类型转换。这样实现不好吧?我想肯定有其它好点的办法。
vrhero 2011-06-20
  • 打赏
  • 举报
回复
属性不可能,方法可以...首先你得明白Order<T>和Order是两个完全没有关系的类,partial对它们没有任何影响...

泛型方法很简单...属性其实也是这样的两个方法,语法糖而已...
private object locationname;

public T[] GetLocationname<T>(){
return (T[])locationname??default(T[]);
}

public void SetLocationname<T>(T[] value)
locationname= value;
}

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧