2010-07-17 3 views
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; 

     } 

및 addSetting, removeSetting, checkSettingExists 등 다른 기본적인 기능이 클래스는 매우 기본적인 XML 설정 파일에 대한 기능을 제공합니다.

이제 좀 더 고급 설정 처리가 필요합니다. 그래서 나는 다른 클래스를 만들어 XMLUtility 클래스에서 파생 시켰습니다.

public class KeyPairingXML : XmlUtility 
    { 




    } 

따라서 초기 클래스 생성자를 호출 할 때이 클래스의 생성자가 필요하지 않았습니다. 그러나 나는 틀렸다.

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



     } 

제 질문은 위의 코드가 맞는지 여부입니다. 이 생성자 내부에서 전체 검사 프로세스를 작성해야합니까, 아니면 기본 클래스의 생성자가 처리 할 것입니까? 그냥 빈 코드 블록이 맞습니까? 당신이 사용하고있는 언어

+1

그냥 메모하세요? 허위 사실; isFilePresent() 메서드에서 반환 - File.Exists (FilePath + "\\"+ XMLFileName); 충분하다. –

+0

오 예! :) 그걸 가리키는 고맙습니다 +1 –

답변

3

확실하지,하지만 경우에 당신은 파생 타입의 생성자를 정의 ommit 수 있습니다 (예 : Java 또는 C# 등) 대부분 :

  1. 기본 클래스 따라서 (생성자를 정의하지 않습니다
  2. 기본 클래스는 인수가없는 생성자를 정의합니다. 이 경우에는 다른 생성자를 가질 수 있지만 변경되지는 않습니다.

그러나 기본 클래스는 기본값이 아닌 생성자 만 정의하므로 파생 클래스에서 다시 정의해야합니다. 가지고있는 다음 코드가 맞습니다 :

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

또한 기본 클래스에서 public 메서드를 호출 할 수 있어야합니다. 오류/경고가 표시됩니까?

+0

고맙습니다! 필자가 작성한 코드가 올바른지 알고 싶었습니다. 그리고 클래스 라이브러리에 필요한 참조를 추가하지 않았으므로 공용 메서드 문제가 해결되었습니다. –