私はこのコードを見ました:
this.CreateGraphics().DrawRectangle( Pens.Black, new Rectangle( 0, 0, 200, 100 ) );
CreateGraphics()
はメソッドですが、静的ボイドを持つクラスのように機能します。コードでこれを作成するにはどうすればよいですか?このテクニックをどのように呼ぶことができるかわかりません...
私はこのコードを見ました:
this.CreateGraphics().DrawRectangle( Pens.Black, new Rectangle( 0, 0, 200, 100 ) );
CreateGraphics()
はメソッドですが、静的ボイドを持つクラスのように機能します。コードでこれを作成するにはどうすればよいですか?このテクニックをどのように呼ぶことができるかわかりません...
これはファクトリメソッドと呼ばれます(これはデザインパターンの1つです)。基本的に、クラスの新しいインスタンスを返すメソッドを作成します。例:
public class Graphics
{
public static Graphics CreateGraphics()
{
return new Graphics();
}
// ... other methods etc ...
public bool OtherMethod()
{
return false;
}
}
// then you can do Graphics.CreateGraphics().OtherMethod();
アップデート
この設計パターンは他の場所でも使用できます。必要なのは、クラス(CreateGraphics
メソッド)の新しいインスタンスを返すメソッドを作成することだけです。
public class MyClass
{
public static Graphics CreateGraphics()
{
return new Graphics();
}
// ... other methods etc ...
public void MyOtherMethod()
{
this.CreateGraphics().Something();
}
}
CreateGraphics()は、Graphicsクラスのインスタンスを返します。
Control.CreateGraphics()メソッドについて話していると思いますが、
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.creategraphics.aspx
このようなオブジェクトのインスタンスを返すメソッドはすべて、この方法で使用できます。