2

フォームAとフォームBの2つのフォームがあり、XMLファイルに情報を入力するために使用します。ここで、これら2つのフォームは、基本的に同じ(同じ名前、同じ実装)のいくつかのメソッドを呼び出す必要があります。

フォームAとフォームBはすでにから継承しているため、このコンテキストでは基本クラスを使用できませんSystem.Windows.Forms.Form。これらの2つのフォームが実装するインターフェイスを使用する必要がありますか?必要な方法は同じなので、これが最善のアプローチになるとは思えません。

これに対するより良いアプローチを提案できますか?

ありがとう。

4

3 に答える 3

1

プロジェクト内の一般的な関数が格納されているクラスを作成できます。これらの関数は、任意のフォームで呼び出すことができます。

namespace ProjectNameSpace
{
    public class GenericFunctions
    {
        public static void WriteToXML()
        {
         // come code here
        }
    }
}
于 2013-03-08T06:02:52.463 に答える
1

コードの再利用といわゆる「DRY」の原則に従うには、コードの重複を避けるために「EXTRACTCLASS」リファクタリングを実行する必要があります。

上記の文が非常に一般的であるように見える場合、素人の言葉で言えば、異なる形式で異なる実装を持ちたくない場合は完璧な候補であるユーティリティクラスを作成し、コードをユーティリティ静的クラスに移動します。

public static  class Utility
{
    public static void WriteToXML()
    {
        // come code here
    }
}
于 2013-03-08T06:18:15.667 に答える
0

フォームAとフォームBが継承する基本フォームを導入することは間違いなく可能です。

public partial class BaseForm : System.Windows.Forms.Form
    {
        public BaseForm()
        {
            InitializeComponent();
        }

        public void  CommonMethod()
        {

        }
    }


public partial class FormA : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }

    private void LocalMethod()
    {
        CommonMethod();
    }


}

public partial class FormB : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }

    private void LocalMethod()
    {
        CommonMethod();
    }


}

とはいえ、一般的なコードにUI関連のものが含まれていない場合は、@ Gian Acunaが正解であり、静的メソッドを使用して別のクラスを作成できます。

于 2013-03-08T06:16:28.523 に答える