C# 泛型如何调用类型T 的实例中的东西

会打代码的扫地王大爷 2014-08-27 09:39:56

public class ABC<T>
{
T tempForm;
public ABC(T input)
{
tempForm=input
}
public void solve ()
{
tempForm.myNotification.Message="OK"; //myNotification是我写的某个类的实例,Message是它的属性,
//可是编译器 提示T中不包含myNotification的含义,该怎么弄。
}
}

窗口Load事件中这样子调用
{
public Notification myNotification;
ABC myABC<Form1>=new myABC<Form1> (this)
}

...全文
1473 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WM_JAWIN 2014-08-29
  • 打赏
  • 举报
回复
是interface登场时候了。 不过看着楼主写代码觉得好神奇,不和你想做什么,
生财 2014-08-29
  • 打赏
  • 举报
回复
或者使用楼上的 T tempForm; public ABC(T input) { tempForm=input dynamic aa= tempform; aa.xxx }
threenewbee 2014-08-28
  • 打赏
  • 举报
回复
晕。你的需求和泛型根本没关系。 如果你很多窗体都要用Form1,你可以把它写在基类中。 如果你要避免反射访问类型的成员,也可以这么写: dynamic d = obj; d.XXX(这里可以随便写) = xxx
  • 打赏
  • 举报
回复
引用 1 楼 wangnaisheng 的回复:
http://www.cnblogs.com/jams742003/articles/1273358.html http://birdshover.cnblogs.com/articles/392127.html 看看泛型的使用;
一般的用法我会,我的疑问是怎么调用T里面的成员
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
就你的代码,用不到泛型,泛型相当于将类型作为参数,这里明显你想将对象作为参数而不是类型 public class ABC { Form1 tempForm; public ABC(T input) { tempForm=input } public void solve () { tempForm.myNotification.Message="OK"; //myNotification是我写的某个类的实例,Message是它的属性, //可是编译器 提示T中不包含myNotification的含义,该怎么弄。 } }
因为每个窗口都要调用这个类,而且要把窗口的实例this通过构造函数传入那个类中,所以窗口一多,构造函数要写老长,所以想用泛型,可是不知道怎么调用窗体类型T中的成员
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
类似于定义 public class ABC<T> where T:Form 但是这样定义,你一定会觉得“多此一举,画蛇添足”了。 确实是这样!但是你既然相当然地确定 T 就是定义了 myNotification,你又怎么可能不确定 T 具有什么父类呢? 不要因为“泛型”这个词儿显得高大上似地,就滥用它。想明白你要写的这个 T 需要什么设计尺度吧。
貌似依然没法引用T中的成员
threenewbee 2014-08-27
  • 打赏
  • 举报
回复
就你的代码,用不到泛型,泛型相当于将类型作为参数,这里明显你想将对象作为参数而不是类型 public class ABC { Form1 tempForm; public ABC(T input) { tempForm=input } public void solve () { tempForm.myNotification.Message="OK"; //myNotification是我写的某个类的实例,Message是它的属性, //可是编译器 提示T中不包含myNotification的含义,该怎么弄。 } }
  • 打赏
  • 举报
回复
类似于定义 public class ABC<T> where T:Form 但是这样定义,你一定会觉得“多此一举,画蛇添足”了。 确实是这样!但是你既然相当然地确定 T 就是定义了 myNotification,你又怎么可能不确定 T 具有什么父类呢? 不要因为“泛型”这个词儿显得高大上似地,就滥用它。想明白你要写的这个 T 需要什么设计尺度吧。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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