从外部设置Base类属性 [英] Setting Base class attribute from outside
问题描述
方法1:
class Mydata
{
}
class Converter1:Converter
{
void Converter1(Mydata data1)
{
data = data1;
}
public void Convert()
{
// USINGdatahere
}
}
class Converter2转换器
{
void Converter2(Mydata data2)
{
data = data1;
}
public void Convert()
{
//在这里使用数据
}
}
创建对象时,我可以创建如下:
Mydata data1 = new Mydata()
Mydata data2 = new Mydata()
Coverter cObj = Converter1(data1)
cObj.Convert()
Coverter cObj1 = Converter2(data2)
cObj1.Convert();
方法2:
class Mydata
{
}
class Covnerter1:Converter
{
public void Convert()
{
// USINGdatahere
}
}
class Converter2:Converter
{
public void Convert
{
// USINGdatahere
}
}
创建对象时,我可以创建如下,并在基类中设置属性值。
Mydata data1 = new Mydata()
Mydata data2 = new Mydata()
Coverter cObj = Converter1()
cObj.data = data1;
cObj.Convert()
Coverter cObj1 = Converter2()
cObj1.data = data2
cObj1.Convert()
哪种方法更好?或者任何其他更好的方法?
忽略转换器的陌生人...
在更好地分享更多的代码和封装数据方面:通常,如果您需要设置基类的属性,可以通过基类构造函数执行:
class Base
{
public MyData {get私人集合
public Base(MyData data)
{
MyData = data;
}
}
class派生:Base
{
public Derived(MyData data):base(data)
{}
//在这里使用MyData的方法...
}
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?
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...
}
这篇关于从外部设置Base类属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!