У меня есть базовый класс, который наследуется несколькими производными классами. Я инициализирую некоторые свойства базового класса в конструкторе. Есть ли способ сделать свойство базового класса разделяемым моими производными объектами, а не создавать те же значения свойств для каждого объекта производного класса. Это действительно важно, потому что некоторые из значений свойств базового класса генерируются службами, и совместное использование этого может повысить производительность. Ниже несколько простой план, что я пытаюсь сказать:C#: make производный объект условно обменивается одним и тем же базовым объектом
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
Передайте один экземпляр объекта в конструкторе, который содержит значение «Значение» _ (кеш) _ –
@SwagataPrateek, эти свойства базового класса будут использоваться только по методам производного класса – Unnie