86452

Question:
I want use a base class property in my derived classes. Also, I have to pass the property value from outside. I can think of the following two approaches:
Approach 1:
class Mydata
{
}
class Converter1:Converter
{
void Converter1(Mydata data1)
{
data = data1;
}
public void Convert()
{
// USING "data" here
}
}
class Converter2 : Converter
{
void Converter2(Mydata data2)
{
data = data1;
}
public void Convert()
{
//USING "data" here
}
}
When creating the objects I can create like following:
Mydata data1 =new Mydata()
Mydata data2 =new Mydata()
Coverter cObj= Converter1(data1 )
cObj.Convert()
Coverter cObj1= Converter2(data2 )
cObj1.Convert();
Approach 2:
class Mydata
{
}
class Covnerter1:Converter
{
public void Convert()
{
// USING "data" here
}
}
class Converter2 : Converter
{
public void Convert()
{
// USING "data" here
}
}
When creating the objects I can create like following and the set the property value in the base class.
Mydata data1 =new Mydata()
Mydata data2 =new Mydata()
Coverter cObj= Converter1()
cObj.data = data1;
cObj.Convert()
Coverter cObj1= Converter2()
cObj1.data =data2
cObj1.Convert()
Which approach is better? Or any other better approach?
Answer1:Ignoring the "Converter" strangeness...
In terms of "better as sharing more code and encapsulating data": Often if you need to set property of base class you can do it via base class constructor:
class Base
{
public MyData { get; private set; }
public Base(MyData data)
{
MyData = data;
}
}
class Derived : Base
{
public Derived(MyData data):base(data)
{}
// Methods that use MyData here...
}