ASP.net用法系列:如何从基类调用LINQ/EF类的属性
2011-11-24 23:15
225 查看
如果有各种动物,比如Dogs/Cats/Cows/...,都有不同的Age方法,若想从其基类用相同的方法ShowAge来显示这些不同的Age,自然就可以借用基类Animal的virtual函数,比如:
override是个关键,因为如果没有override,则animal会调用自己的Age。如果Dog和Cat是一个LINQ/EF自动生成的类,则没有override这个关键词,这种情况就会发生。
当然不能每次到LINQ/EF生成的代码里边手工加上, 怎么办呢?
上次遇到这个问题,搜索而不得,测试了半天找到一个方法,今天再次用上,看来不算少见发帖共享。
在Animal里边,使用这些代码:
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》
public class Animal { public virtual Age { get {....} set {....} } public ShowAge() { Show(Age); } } public class Dog : Animal { public override Age { get {...} set {...} } } public class Cat : Animal { public override Age { get {...} set {...} }
override是个关键,因为如果没有override,则animal会调用自己的Age。如果Dog和Cat是一个LINQ/EF自动生成的类,则没有override这个关键词,这种情况就会发生。
当然不能每次到LINQ/EF生成的代码里边手工加上, 怎么办呢?
上次遇到这个问题,搜索而不得,测试了半天找到一个方法,今天再次用上,看来不算少见发帖共享。
在Animal里边,使用这些代码:
public virtual int Age { get { PropertyInfo pi = this.GetType().GetProperty("Age"); int age = (int)pi.GetValue(this, new object[] {}); return age; } set { PropertyInfo pi = this.GetType().GetProperty("Age"); pi.SetValue(this, value, new object[] { }); } }这种方法其实和“继承”没什么大关系,纯粹是直接读取了数据库表中的属性,可以应急。
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》
相关文章推荐
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- ASP.net用法系列:如何从基类调用LINQ/EF类的属性
- 每日学习总结:CSS:Clear属性的用法、重复交易提示框、弹出提示框后页面变形、asp.net调用smtp服务发送邮件问题
- Asp.net 2.0 中如何调用用户控件(UserControl)的相关方法或属性/如何传参等
- Asp.net 如何取母版页的属性及控件及方法调用
- 每日学习总结:CSS:Clear属性的用法、重复交易提示框、弹出提示框后页面变形、asp.net调用smtp服务发送邮件问题
- ASP.NET中如何调用存储过程
- ASP.NET前台JS与后台CS函数如何互相调用
- [转]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 在ASP.NET WebService 中如何使用 WebMethod 属性
- ASP.NET如何获取系统时间和数据功能调用
- ASP.NET中Button控件的CommandName和CommandArgument属性用法
- Owin+ASP.NET Identity浅析系列(二)扩展用户属性
- Asp.Net_文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 前面在《Asp.Net Forums中对.Net中序列化和反序列化的应用》一文中讲了,对于一些扩展属性,可以将字符串集合序列化为二进制,也可以从二进制反序列化为字符串集合。其实我一直有个疑问,对于asp.net中可以很容易实现,但是在asp中该如何?