本記事は、DevExpress CodeRush Tips&Tricks (http://www.skorkin.com/)にて公開されている
- Code Generation – Create Descendant and Create Descendant (with virtual overrides)
の拙訳版です。翻訳および公開にあたり、ブログ著者の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
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ