none
请教一个自定义接口的写法? RRS feed

  • 问题

  • 自己写个数据库操作类,里面有个属性表示数据阅读器DataReader。现在要写个接口,接口里要求把这个属性也定义进去,也就是说凡是实现这个接口的类都需要有该属性。但是这个成员属性该怎么定义?如果用SqlDataReader类型,那么继承这个接口的数据库操作类如果是OleDb或MySql怎么办;如果用IDataReader,好像也不行哦。应该怎么写啊?谢谢。

    2012年2月14日 10:59

答案

  • 您可以用 IDataReader OK!

    只是要用SQL, OleDB or MySql再去實作就可以了呀!

    例如你可能會有一個 myAdoDB(IDataReader, IDbDataAdapter.....)
    如果要OleDB就建一個 myAdoDBOle繼承myAdoDB or 實作(OleDataReader, OleDbDataAdapter....)
    然後透過Factory去依你要的把myAdoDB生成出來。
    以上是我們的做法,給您參考一下!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已编辑 亂馬客 2012年2月15日 2:08
    • 已标记为答案 米斯瑞 2012年2月16日 7:46
    2012年2月15日 2:03
  • 请注意:接口实现的方法务必请保持和接口返回值等一致。因此请把“OdbcDataReader”返回类型改成IDataReader。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年2月16日 0:59
    版主
  • 就像 Wei_Dong大說的要用IDataReader,類似下面的做法哦!

    public IDatareader DR { get { return dr; } set { dr = value; } }

    DR = new OleDataReader();



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 米斯瑞 2012年2月16日 7:48
    2012年2月16日 6:13

全部回复

  • 您可以用 IDataReader OK!

    只是要用SQL, OleDB or MySql再去實作就可以了呀!

    例如你可能會有一個 myAdoDB(IDataReader, IDbDataAdapter.....)
    如果要OleDB就建一個 myAdoDBOle繼承myAdoDB or 實作(OleDataReader, OleDbDataAdapter....)
    然後透過Factory去依你要的把myAdoDB生成出來。
    以上是我們的做法,給您參考一下!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已编辑 亂馬客 2012年2月15日 2:08
    • 已标记为答案 米斯瑞 2012年2月16日 7:46
    2012年2月15日 2:03
  • 自己写个数据库操作类,里面有个属性表示数据阅读器DataReader。现在要写个接口,接口里要求把这个属性也定义进去,也就是说凡是实现这个接口的类都需要有该属性。但是这个成员属性该怎么定义?如果用SqlDataReader类型,那么继承这个接口的数据库操作类如果是OleDb或MySql怎么办;如果用IDataReader,好像也不行哦。应该怎么写啊?谢谢。

    你这样定义接口:

    public interface XXX
    {
         public property 你自己的类型 DataReader{get;set;}
    }


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年2月15日 2:22
    版主
  • 您可以用 IDataReader OK!

    只是要用SQL, OleDB or MySql再去實作就可以了呀!

    例如你可能會有一個 myAdoDB(IDataReader, IDbDataAdapter.....)
    如果要OleDB就建一個 myAdoDBOle繼承myAdoDB or 實作(OleDataReader, OleDbDataAdapter....)
    然後透過Factory去依你要的把myAdoDB生成出來。
    以上是我們的做法,給您參考一下!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    比如接口IDbData中有一属性:IDataReader DR { get; set; }

    那么OdbcData实现了IDbData接口,但如果我写    public OdbcDataReader DR { get { return dr; } set { dr = value; } }这样通不过编译,报错:

    错误 1 “OdbcData”不会实现接口成员“IDbData.DR”。“ZhongCong.Common.Data.OdbcData.DR”或者是静态、非公共的,或者有错误的返回类型。

    2012年2月15日 12:40
  • 请注意:接口实现的方法务必请保持和接口返回值等一致。因此请把“OdbcDataReader”返回类型改成IDataReader。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年2月16日 0:59
    版主
  • 就像 Wei_Dong大說的要用IDataReader,類似下面的做法哦!

    public IDatareader DR { get { return dr; } set { dr = value; } }

    DR = new OleDataReader();



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 米斯瑞 2012年2月16日 7:48
    2012年2月16日 6:13
  • 请注意:接口实现的方法务必请保持和接口返回值等一致。因此请把“OdbcDataReader”返回类型改成IDataReader。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处


    看来只有这样了,谢谢大家了。
    • 已编辑 米斯瑞 2012年2月16日 7:49 理解有误
    2012年2月16日 7:46