この属性共有を行う基本的な方法(パラメータごとの属性渡し)とインターフェイス(これまでのところ、私はメインクラスをリファクタリングしており、これをやり直すことをやめようとしているので、これを行うには他の方法があるかどうか、おそらくさらに良いことを知りたいと思っています。複数のクラスが同じ属性を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で指定することはできません。 –
属性は、メソッド、クラス、またはプロパティに対して使用される宣言的クラスと呼ばれるのが一般的です。おそらく、属性の代わりにプロパティまたはメンバであることを意味します。私はそれに応じてあなたの質問を更新するので、誤解されていません。また、母親と子という用語は、継承に使用される用語ではありません。タイプ間の関係がある場合は、親/子を使用します。継承はスーパークラスとサブクラスを扱います。 – Michael
あなたが何を求めているのか分かりません。あなたは、あなたがしようとしていることのより詳細な情報を提供する必要があります。あなたは悪い習慣であることを何も示しておらず、具体的な方法で修正しようとしていることを指摘していません。私は独自のコードを難読化することを理解していますが、あなたが解決しようとしている継承の問題の種類を理解するために、果物や車両などの例を考え出す必要があります。 – krillgar