私は複数の派生クラスによって継承された基本クラスを持っています。私はコンストラクタ内の基本クラスのいくつかのプロパティを初期化しています。派生クラスオブジェクトごとに同じプロパティ値を作成するのではなく、派生オブジェクトで基本クラスプロパティを共有できるようにする方法はありますか。基本クラスのプロパティ値の一部がサービスによって生成され、これを共有するとパフォーマンスが向上するため、これは本当に重要です。以下 はやや私が言うことをしようとしています何の簡単な青写真です:C#:派生オブジェクトを条件付きで同じ基本オブジェクトを共有する
public class ClassA
{
//i dont want to use static here as it will be shared for multiple codes
protected string country { get; set; }
public ClassA(string code)
{
country = CallsomeService(code);
}
}
public class ClassB : ClassA
{
public ClassB(string code) : base(code)
{
//blah blah
}
public void DomeSomethingWithCountry()
{
Console.WriteLine($"doing this with {country} in classB");
}
}
public class ClassC : ClassA
{
public ClassC(string code) : base(code)
{
//blah blah
}
public void DomeSomethingWithCountry()
{
Console.WriteLine($"doing soemthing else with {country} in classC");
}
}
は今ではなく、結果に静的にコールをしたのを格納することができ
public void test()
{
//call service for this
var classb=new ClassB("1");
//dont call service for this
var classc=new ClassC("1");
classb.DomeSomethingWithCountry();
classc.DomeSomethingWithCountry();
//call service for this as code is different
var classb1=new ClassB("2");
}
すべてのコードに対して静的にすると、常に同じ国が返されます – Unnie
コンストラクタ内のオブジェクトの1つのインスタンスを渡して、 'Value' _(キャッシュ)_ –
@SwagataPrateekこれらの基本クラスのプロパティが使用されます派生クラスのメソッドによって – Unnie