0

私はこのコードを見ました:

this.CreateGraphics().DrawRectangle( Pens.Black, new Rectangle( 0, 0, 200, 100 ) );

CreateGraphics()はメソッドですが、静的ボイドを持つクラスのように機能します。コードでこれを作成するにはどうすればよいですか?このテクニックをどのように呼ぶことができるかわかりません...

4

2 に答える 2

2

これはファクトリメソッドと呼ばれます(これはデザインパターンの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();
    }
}
于 2012-10-24T16:46:45.710 に答える
0

CreateGraphics()は、Graphicsクラスのインスタンスを返します。

Control.CreateGraphics()メソッドについて話していると思いますが、

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.creategraphics.aspx

このようなオブジェクトのインスタンスを返すメソッドはすべて、この方法で使用できます。

于 2012-10-24T16:47:20.033 に答える