나는이 속성을 공유하는 가장 기본적인 방법 (매개 변수 당 전달 속성)과 인터페이스 (지금까지 가장 깨끗한 방법이었습니다. 찾았지만), 내 주 수업을 리팩토링하고 오랫동안이 작업을 다시하지 않아도되기를 원하기 때문에 다른 방법, 어쩌면 더 나은 방법이 있는지 알고 싶습니다.여러 클래스가 동일한 속성을 C#에서 공유하는 가장 좋은 방법
문제는 다음과 같습니다. 저는 여러 명의 자녀가있는 어머니 클래스를 가지고 있지만 회사의 필요성에 따라 다른 자녀가 만들어지고 자녀의 일부 메소드가 어머니에게 전달되었고 오늘 어머니는 이미 15 개의 속성과 더 많은 60 개의 메소드가 있습니다.
내 수업은 내가 자랑 아니에요 이러한 혼란 괴물이다, 그래서 그녀는 리팩토링 울고 왜 이해한다 : 그것의 모습에서
public class A
{
protected Form myForm = new Form();
protected WebBrowser myBrowser = new WebBrowser();
protected List<ComplexType1> List1 = new List<ComplexType1>();
protected List<ComplexType2> List2 = new List<ComplexType2>();
protected List<ComplexType3> List3 = new List<ComplexType3>();
protected List<ComplexType4> List4 = new List<ComplexType4>();
protected ComplexType5 myData;
// And more attribute ...
public A() { }
protected virtual void Method1() {}
protected virtual void Method2() {}
protected virtual void Method3() {}
protected virtual void Method4() {}
protected virtual void Method5() {}
// And more and more methods ...
}
public class B : A
{
protected ComplexType6 anotherData;
public B() : base() {}
protected override void Method3() {}
protected override void Method4() {}
protected virtual void Method6() {}
}
public class C : A
{
public C() : base() {}
protected override void Method1() {}
protected virtual void Method6() {}
protected virtual void Method7() {}
}
// And more and more child classes ...
'B'와 'C'의 생성자에 대해 반환 유형 'void'를 지정할 수 없습니다. –
특성은 메서드, 클래스 또는 속성에 사용되는 선언적 클래스라고 일컬어지는 것을 유의하십시오. 속성 대신 속성 또는 멤버 일 가능성이 있습니다. 이에 따라 귀하의 질문이 업데이트되므로 오해의 소지가 없습니다. 또한 어머니와 자녀라는 용어는 상속에 사용되는 용어가 아닙니다. 유형간에 관계가있을 때 parent/child를 사용합니다. 상속은 수퍼 클래스와 서브 클래스를 다룹니다. – Michael
나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. 당신이하려는 일에 대해 더 자세하게 설명해야합니다. 당신은 나쁜 습관을 보여주지 않았고 어떤 구체적인 방법으로 고치려고하는지 지적하지 않았습니다. 독점 코드를 난독 화하려고하는 것을 이해하지만, 과일, 차량 등으로 예제를 만들어야합니다. 그래서 당신이 해결하려고하는 상속 문제가 어떤 것인지 이해할 수 있습니다. – krillgar