2017-02-08 4 views
0

좋아요. 그렇기 때문에 나는 관심이 있고 아마도 간단한 문제가 발생했습니다. 다른 클래스 (자식)가 상속하는 기본 클래스가 있습니다. 저는베이스와 아이에서 같은 매개 변수없는 생성자를가집니다. 자식에서 기본 속성으로 전파되는 기본값을 설정하고 싶습니다. 여러 생성자에 코드를 중복 한 경우 체인파생 클래스에서 기본 클래스의 기본 속성을 설정하십시오.

public partial class baseclass 
{ 
    public baseclass() { 
     //never called if instantiated from baseclass(string newp1) 
     p1 = ""; 
     p2 = "google"; 
    } 

    public baseclass(string newp1) { 
     p1 = newp1; //p2 will be "" and p1 will be newP1 
    } 

    public string p1 { get; set; } 
    public string p2 { get; set; } 
} 

public partial class childclass : baseclass 
{ 
    public childclass() { 
     //How can I call this to set some default values for the child? 
     p2 = "facebook"; 
    } 

    public childclass(string newp1) : base(newp1) { 
     p1 = newp1; //p2 needs to be "facebook" 
    } 

} 
+2

합니다. 상속 받기 위해서'public class child : base'를해라. [부분 클래스] (https://msdn.microsoft.com/en-us/library/wa80x488.aspx)는 완전히 다른 것입니다. –

+0

'public class childclass : baseclass' –

+0

예제를 추가했지만 내 로컬 코드에 포함되어 있습니다. – chrisdyck

답변

1

사용 생성자 :

public class baseclass 
{ 
    public baseclass() : this("google") { } 
    public baseclass(string newp1) 
    { 
     p1 = newp1; // the only place in your code where you init properties 
     p2 = ""; 
    } 

    public string p1 { get; set; } 
    public string p2 { get; set; } 
} 

하위 클래스의 base class

public class childclass : baseclass 
{ 
    public childclass() : this("facebook") { } // you can also call base here 
    public childclass(string newp1) : base(newp1) { } 
} 

을 상속한다은 또한에 계속이 같은 일을하고 싶습니다 마음이 parital은 클래스/메소드를 여러 부분으로 나눌 수 있습니다 (예 : 다른 파일에 보관). 이 함수는 클래스를 생성하는 경우 (예 : 데이터베이스 테이블에서)에는 생성 된 클래스에 무언가를 추가/사용자 정의하려는 경우에 유용합니다. 사용자 정의 된 코드를 생성 된 파일에 직접 넣으면 클래스가 재생성 된 후에 손실됩니다. Read more

+0

감사합니다. Sergey! 나는 이것들을 시험해 볼 것이다. – chrisdyck

+0

@chrisdyck [누군가 내 질문에 대답하면 어떻게해야합니까?] – CKing

0

당신은 기본 클래스에서 보호 생성자를 생성하고 자식 클래스에서 호출 할 수 있습니다 : 당신은 아무것도 상속하지하고

public class Base 
    { 
     public Base(int value1, int value2) { ... } 
     protected Base(string value1) { ... } // only for child class 
    } 

    public class Child : Base 
    { 
     public Child() : Base("Value") { ... } 
    } 
+0

나는 올바른 방향으로 나아가고 있다고 생각합니다. Mateusz! – chrisdyck

관련 문제