0

私の問題はこのようなものです。XMLUtility クラスがあります

public class XmlUtility
    {

        protected string FilePath;

        protected string XMLFileName;

        protected XmlDocument SettingsFile;


        public XmlUtility(string inFilePath, string inXMLFileName)
        {    

            FilePath = inFilePath;
            XMLFileName = inXMLFileName;    

            if (isFilePresent() == false)
            {                    
                createXMLFile();                   
            }

            else
            {
                SettingsFile = new XmlDocument();
                SettingsFile.Load(FilePath + "\\" + XMLFileName);    
            }   

        }

そして

public bool isFilePresent()
        {                
            return File.Exists(FilePath + "\\" + XMLFileName) ? true : false;

        }

このクラスは、非常に基本的な xml 設定ファイルの機能を提供します。

そのため、もう少し高度な設定の処理が必要です。そこで、別のクラスを作成し、XMLUtility クラスから派生させました。

public class KeyPairingXML : XmlUtility
    {




    }

したがって、私の最初の考えは、基本クラスのコンストラクターを呼び出すため、このクラスのコンストラクターは必要ないということでした。しかし、私は間違っていました。

 public KeyPairingXML(string inFilePath, string inXMLFileName) : base(inFilePath, inXMLFileName)
        {



        }

私の質問は、上記のコードが正しいかどうかです。このコンストラクター内にもチェックプロセス全体を記述する必要がありますか、それとも基本クラスのコンストラクターによって処理されますか? 空のコードブロックだけが正しいですか?

4

1 に答える 1

3

使用している言語はわかりませんが、ほとんど (Java や C# など) では、次の場合に派生型でコンストラクターを定義することを省略できます。

  1. 基本クラスはコンストラクターを定義しません (したがって、暗黙的なデフォルト コンストラクターがあります)。
  2. 基本クラスは、引数のないコンストラクターを定義します。この場合、他のコンストラクターを持つことができ、物事は変わりません

ただし、基本クラスはデフォルト以外のコンストラクターしか定義していないため、派生クラスで再定義する必要があります。あなたが持っている次のコードは正しいです:

public KeyPairingXML(string inFilePath, string inXMLFileName)
  : base(inFilePath, inXMLFileName) {
}

基本クラスで public メソッドを呼び出すこともできるはずです。エラー/警告が表示されていますか?

于 2010-07-17T19:09:18.960 に答える