none
DataRowを継承したい RRS feed

  • 質問

  • いつもお世話になっております。
    DataRowを継承したクラスを作ることは不可能でしょうか。
    DataTable.NewRowメソッドで普通は新規行を作るかと思いますが、
    これでは内部でインスタンスが作られるので継承させることはできません。

    具体的にやりたいことは
    行のインデックスで検索したりするのを避けるため、
    各行に次の行へのポインタのようなものを持たせたりしたいのです。
    (TreeNodeはもともとそのへんがうまく出来てるのですが・・・)
    継承が無理ならそれ以外のよい方法があればご教授ください。
    宜しくお願い致します。
    2009年11月7日 16:14

回答

  • NewRowではなくて、NewRowFromBuilderを継承してください。

        protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
        {
          return (DataRow)Activator.CreateInstance(typeof(TRow), builder);
        }
    
        public new TRow NewRow()
        {
          return (TRow)base.NewRow();
        }
    
    
    上のコードではついでにNewRowの返す型を新しい型TRowに変えています。
    2008をお持ちであればTypedDataTableをデバッグしてソースを見て参考にすることができます、
    http://www.mahoroba.ne.jp/~mw_ken
    2009年11月7日 22:59

すべての返信

  • NewRowではなくて、NewRowFromBuilderを継承してください。

        protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
        {
          return (DataRow)Activator.CreateInstance(typeof(TRow), builder);
        }
    
        public new TRow NewRow()
        {
          return (TRow)base.NewRow();
        }
    
    
    上のコードではついでにNewRowの返す型を新しい型TRowに変えています。
    2008をお持ちであればTypedDataTableをデバッグしてソースを見て参考にすることができます、
    http://www.mahoroba.ne.jp/~mw_ken
    2009年11月7日 22:59
  • 三輪の牛様
    あるんですね!
    ありがとうございました。万事解決しました。
    2009年11月8日 1:43
  • フォーラムオペレーターの高橋春樹です。

    三輪の牛さん、こんにちは。
    アドバイス有難うございました。

    Myonさん、初めまして。
    MSDNフォーラムのご利用有難うございます。

    問題が解決したようで、良かったですね!
    今回、三輪の牛さんからの投稿が、有用な情報だと思いましたので、勝手ながら、回答マークを付けさせて貰いました。
    次回からで良いのですが、問題が解決したときは、Myonさんの方から、有用な情報と思われた投稿に、
    回答マークを付けて頂きたいと思います。フォーラムの仕組みが分かり難くてすみません・・・(^-^;)

    今後ともMSDN/TechNetフォーラムを宜しくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年11月17日 7:19