いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

DevExpress奮闘記-103 (CodeRush Tips&Tricks, Code Generation – Create Descendant, 子クラス生成, 翻訳)

本記事は、DevExpress CodeRush Tips&Tricks (http://www.skorkin.com/)にて公開されている


の拙訳版です。翻訳および公開にあたり、ブログ著者のAlexさんより許可は頂いています。


CodeRush (http://www.skorkin.com/2010/06/devexpress-coderush-pro/)に搭載されている
Create Descendantコードプロバイダ(http://www.skorkin.com/2011/01/ide-tools-terminologykey-concepts/)は
現在のクラスの子クラスを、抽象メソッドをオーバーライドしつつ、生成する機能です。
Create Descendant (with virtual overrides)という名前の2つ目のバージョンは、Create Descendantの機能に加えて
virtual指定されているメンバーのオーバーライドも追加します。


以下の抽象クラスにCreate Descendantを適用すると

public abstract class Logger
{
  public abstract void GetMessage(int index);
  public abstract void SendMessage(string msg);
}


以下の子クラス宣言が生成されます。

public class LoggerDescendant : Logger
{
  public LoggerDescendant()
  {
 
  }
  public override void GetMessage(int index)
  {
    throw new NotImplementedException();
  }
  public override void SendMessage(string msg)
  {
    throw new NotImplementedException();
  }
}


オーバーライドするかどうかを選択する事ができるvirtualメンバーを含むクラスが以下のように存在するとして

public class Calculator
{
  public virtual void Add() { }
  public virtual void Sub() { }
  public virtual void Mul() { }
  public virtual void Div() { }
}


Create Descendant (with virtual overrides)を適用すると、以下のような結果となります。

public class CalculatorDescendant : Calculator
{
  public CalculatorDescendant()
  {
 
  }
  public override void Add()
  {
    base.Add();
  }
  public override void Sub()
  {
    base.Sub();
  }
  public override void Mul()
  {
    base.Mul();
  }
  public override void Div()
  {
    base.Div();
  }
}


どちらのコードプロバイダもコード生成時に引数を持たないpublicなコンストラクタを、新たなクラスに出力します。
また、作業を開始したソース位置にマーカー(http://www.skorkin.com/2010/09/navigation-markers/)が設定されます。
生成された新たなクラスは、同じファイルの現在のクラスの上部に出力されます。


―–
Products: CodeRush Pro
Versions: 11.1 and up
VS IDEs: any
Updated: Jun/30/2011
ID: C109



================================
過去の記事については、以下のページからご参照下さい。