private
含まれているクラスのジェネリックを使用して、メソッド内でフィールドを定義する方法はありますか?
(質問の長さをお詫びします。私が求めていることを正確に特定するのに苦労しています)
具体的には、現在、次の要件を持つ3 つのクラスA
、があります。B
C
B
とC
呼ばれるフィールドがありますname
が、A
ありませんA
C
メソッドはありますLoad()
が、B
ありません- のコレクション
B
とカスタムメソッドでC
使用されますが、このメソッドは使用されませんname
Add()
A
これは私の現在の解決策です:
public class BaseClass
{
public SomeType Load() { ... }
}
public interface IClass {
string Name {get; set;}
}
public class MyList : SomeCollection<IClass>
{
// Depends on x.Name, and may modify Name before adding x to the collection
public new void Add(IClass x) { ... }
}
public class A : BaseClass { ... }
public class B : IClass { ... }
public class C : BaseClass, IClass { ... }
Name
public がある場合、このソリューションは私にとってはうまくいきset
ます。しかし、を変更できるx.Name
ように適切にカプセル化する方法はありますが、とのインスタンスでは変更できませんか?Add
x.Name
x.Name
B
C