public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IRepository<UserInfo> oo = new User();
UserInfo info = new UserInfo();
oo.Insert(info);
}
}
/// <summary>
/// 实体抽象类
/// </summary>
public abstract class Entity
{}
/// <summary>
/// 用户实体类
/// </summary>
public class UserInfo : Entity
{
public int ID { get; set; }
public string Name { get; set; }
}
/// <summary>
/// 员工实体类
/// </summary>
public class EmployeInfo : Entity
{
public string Code { get; set; }
public string IdCard { get; set; }
}
/// <summary>
/// 用户 Data Access Object
/// </summary>
public class User : Repository<UserInfo>
{}
/// <summary>
/// Employe Data Access Object
/// </summary>
public class Employe : Repository<EmployeInfo>
{}
/// <summary>
/// 操作仓库类
/// </summary>
/// <typeparam name="T"></typeparam>
public class Repository<T> : IRepository<T> where T : Entity
{ #region IRepository<T> 成员 public T Insert(T info)
{
return default(T);
} #endregion
}
/// <summary>
/// 操作仓库接口类
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IRepository<T> where T : Entity
{
T Insert(T info);
}-------------------
以上我是看了NHibernate的示例
自己定的一段代码,
但在用的时候我有一个问题如
这个时候我的User类中我要添加多一个GetName的方法,
这个时候
IRepository<UserInfo> oo = new User();
这样的话就执行不了我的GetName方法
但是如果用
User oo = new User();
这样写的话就发挥不了接口的优势?
好像说没有更好的偶合性还是什么来的?那应该如何来写呢?
解决方案 »
- asp.net
- 菜鸟的一个简单的表格问题。
- 急需问题解决办法:用户在我网站上只要一注册,就会自动得到一个属于他自己的域名(如:lizheng.163.com),如何实现?
- asp.net中关于oracle的问题!!!急!!!谢谢1!!!
- 怎么做datagrid的双击事件
- 困了几个月,感觉超级难,在客户端按一定的公式计算DataGrid各单元格的值
- 关于IOS消息推送的问题。顺带说下,火狐版本不能在csdn发帖的问题!
- asp.net如何刷新框架中的另一个网页,急,在线等
- System.windows.form.GroupBox;用:System.web.UI.webControls.是什么控件代替?
- C#中事务处理问题
- GridView1.DataSource = cs.accessGetDataSet(sql)
- 在线等 .NET 网页主题问题
http://www.mybuffet.cn
而你要用这个接口类型的引用来引用这些类的实例,那么这些实例则只能访问到接口公开的行为换而言之,不属于接口的共同的公共行为,就不应该用接口类型的引用来访问
不成问题的问题要用 IRepository <UserInfo> oo来访问实例,部分实例允许拥有GetName行为,而另一部分不允许拥有GetName,这种想法本身违背OOP思想