interface有無override一說

takako_mu 2010-01-27 08:56:16
我定義了一個接口,比如說

namespace GPSS.IDAL
{
/// <summary>
/// 根據 HeadInfo 查詢 Head 的詳細資料,賦給Gridview
/// </summary>
public interface IHeadListView
{
DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);

int GetHeadCount(HeadInfo myHeadInfo);
}
}


我在DAL中的具體實現略微如下:

namespace GPSS.DAL
{
/// <summary>
/// Rule1:QSTATUS = '1' OR QSTATUS = '2'
/// It's used for Creation
/// </summary>
public class GetHeadByRule1 : IHeadListView
{
/// <summary>
/// Read the paging question head from the database
/// </summary>
/// <param name="myHeadInfo">Question Head Infomation</param>
/// <param name="pagesize">pages size</param>
/// <param name="pageindex">the current page index</param>
public DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex)
{
StringBuilder sb = new StringBuilder();
sb.Append(GetBaseSql(myHeadInfo));
sb.Append(" select * from A\n");
sb.Append(" where Number>=(" + (pageindex - 1) + "*" + pagesize + "+1)\n");
sb.Append(" and Number<=" + pageindex + "*" + pagesize + "\n");
sb.Append(" order by Number\n");
string strSQL = sb.ToString();
return SQLHelper.GetDataTable(strSQL);
}

/// <summary>
/// Get the total count of Questions,and then assign it to the AspNetPager control
/// </summary>
public int GetHeadCount(HeadInfo myHeadInfo)
{
StringBuilder sb = new StringBuilder();
sb.Append(GetBaseSql(myHeadInfo));
sb.Append(" select count(1) from A");
string strSQL = sb.ToString();
return int.Parse(SQLHelper.ExecuteScalar(strSQL).ToString());
}

/// <summary>
/// Base SQL. Creation and Publish, the different points in here
/// </summary>
private string GetBaseSql(HeadInfo myHeadInfo)
{
StringBuilder sb = new StringBuilder();
sb.Append(" with A as\n");
sb.Append(" (\n");
sb.Append(" select row_number() over(order by qid desc) as Number,qid,title,createDate\n");
sb.Append(" from QUE_HEAD\n");
sb.Append(" where (QSTATUS = '1' OR QSTATUS = '2')\n");// the different points
if (!string.IsNullOrEmpty(myHeadInfo.QID))
{
sb.Append(" and qid like '" + myHeadInfo.QID.Replace('*', '%') + "'\n");
}
if (!string.IsNullOrEmpty(myHeadInfo.QTitle))
{
sb.Append(" and title like '" + myHeadInfo.QTitle.Replace('*', '%') + "'\n");
}
sb.Append(" )\n");
string strSQL = sb.ToString();
return strSQL;
}
}
}


那今天另一個同事也想實現這個接口,比如DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);這個方法,他想再加一個參數。DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex, string vendor);這個如何寫呢?interface有override一說嗎?還是說我得將interface換成abstract?
...全文
174 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
junshanhudazhaxi 2010-01-27
  • 打赏
  • 举报
回复
接口也可以继承呀!
你可以新建个接口来继承IHeadListView接口,再让你同时继承新建的这个接口就好了。
Ezy_DK 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 takako_mu 的回复:]
多謝各位,我現在不變,接口還是這個接口,我在子類中拓展了一個新方法,就是帶參數的這個。這樣就可以解決了。
[/Quote]在interface里加比较规范哦
fangyuantdy 2010-01-27
  • 打赏
  • 举报
回复
takako_mu 2010-01-27
  • 打赏
  • 举报
回复
多謝各位,我現在不變,接口還是這個接口,我在子類中拓展了一個新方法,就是帶參數的這個。這樣就可以解決了。
sunhahaha2 2010-01-27
  • 打赏
  • 举报
回复
学习 学习 再学习
龙宜坡 2010-01-27
  • 打赏
  • 举报
回复
可以参考下.NET类库中接口的定义
龙宜坡 2010-01-27
  • 打赏
  • 举报
回复
否则,你在实现类中再多的工作与接口无关。
龙宜坡 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 takako_mu 的回复:]
那今天另一個同事也想實現這個接口,比如DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);這個方法,他想再加一個參數。DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex, string vendor);這個如何寫呢?interface有override一說嗎?還是說我得將interface換成abstract?
[/Quote]

不行。


除非你在接口里声明了多个同名而参数个数不同的方法名称。
flyerwing 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vrhero 的回复:]
引用 3 楼 takako_mu 的回复:
那今天另一個同事也想實現這個接口,
比如DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);這個方法,
他想再加一個參數。
DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex,string vendor);
這個如何寫呢?interface有override一說嗎?還是說我得將interface換成abstract?

這樣看起來比較順眼一點

你这叫overload,和override有什么相干?换句话说,这跟你那个interface没任何关系...

除非你修改现有的interface或者再创建一个新interface,就算这样也跟override不相干...
[/Quote]
overrride是重写
khjian 2010-01-27
  • 打赏
  • 举报
回复
帮顶了
takako_mu 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huyou1983218 的回复:]
直接重载不行吗?
[/Quote]
我不懂重載.how?
vrhero 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 takako_mu 的回复:]
那今天另一個同事也想實現這個接口,
比如DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);這個方法,
他想再加一個參數。
DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex,string vendor);
這個如何寫呢?interface有override一說嗎?還是說我得將interface換成abstract?

這樣看起來比較順眼一點
[/Quote]
你这叫overload,和override有什么相干?换句话说,这跟你那个interface没任何关系...

除非你修改现有的interface或者再创建一个新interface,就算这样也跟override不相干...
周睿 2010-01-27
  • 打赏
  • 举报
回复
为什么要定义接口?接口我理解就是一种规范,如果随意重写的话,就不叫接口,那是类
huyou1983218 2010-01-27
  • 打赏
  • 举报
回复
直接重载不行吗?
zw_548498 2010-01-27
  • 打赏
  • 举报
回复
职业帮顶
takako_mu 2010-01-27
  • 打赏
  • 举报
回复
那今天另一個同事也想實現這個接口,
比如DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex);這個方法,
他想再加一個參數
DataTable GetHead(HeadInfo myHeadInfo, int pagesize, int pageindex, string vendor);
這個如何寫呢?interface有override一說嗎?還是說我得將interface換成abstract?

這樣看起來比較順眼一點

62,051

社区成员

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

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

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

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