如何通过对象反射出其本身

lovebaby 2015-04-03 08:57:03
描述可能不太准确,看代码吧。

<%foreach (ProductClass c in productclass) { %>
<li><a href="<%=getUrl(c)%>"><%=c.classname %></a></li> //传入c
<%} %>

<%foreach (mm_Features f in features){ %>
<li><a href="<%=getUrl(f)%>"><%=f.FeaturesName %></a></li> //传入f
<%} %>


上面的c和f分别属于不同类的实例,现在要统一使用一个方法,做为object传入,怎样在方法中将object转换成其本身呢?


protected string getUrl(object o)
{
//这个o怎样转换为它本身所在的类,这样才能调用它的属性,但是在方法中是不知道传入了哪个类的对象的
}
...全文
412 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
所谓“在方法中将object转换成其本身”你要干啥呢?你还不是随后要基于具体的接口(这里所谓接口是广义概念,包括class定义)而操作吗?如果你不知道需要什么属性、方法、事件,你怎么设计后边的程序?要想真正进行程序设计,你还不是要先把接口声明完备了才能写出程序来?! 有些人不管实际,“反正先弄成一个万能的概念再说”。这其实是自相矛盾的。
  • 打赏
  • 举报
回复
“通过对象反射本身”这个说法其实是逆天的、自相矛盾的。 对于初学者,多多学习基于接口进行程序抽象设计,不要以为反射是什么高大上、“万能”的东西。反射不应是这样被滥用的。
lovebaby 2015-04-04
  • 打赏
  • 举报
回复
引用 2 楼 hzzasdf 的回复:
如果知道所有可能的类,无非是一个个判断过去: if (o is ProductClass) { var a = o as ProductClass;} else if (o is mm_Features) { var b = o as mm_Features; } ...
所有类倒是都知道,这种方法也算是一种方法。dynamic没用过,不过查了一下资料,貌似在我这里不太适用。
  • 打赏
  • 举报
回复
如果知道所有可能的类,无非是一个个判断过去: if (o is ProductClass) { var a = o as ProductClass;} else if (o is mm_Features) { var b = o as mm_Features; } ...
wjq 2015-04-04
  • 打赏
  • 举报
回复
通过o.GetType()获取实际类型之后强转
winner2050 2015-04-04
  • 打赏
  • 举报
回复
这些代码是事先写好的,怎么会不知道什么类型呢? 分来来写就行 protected string getUrl(ProductClass o) { //这个o怎样转换为它本身所在的类,这样才能调用它的属性,但是在方法中是不知道传入了哪个类的对象的 } protected string getUrl(mm_Features o) { //这个o怎样转换为它本身所在的类,这样才能调用它的属性,但是在方法中是不知道传入了哪个类的对象的 }
  • 打赏
  • 举报
回复
你干脆就用dynamic吧

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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