从外部设置Base类属性 [英] Setting Base class attribute from outside

查看:206
本文介绍了从外部设置Base类属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在派生类中使用基类属性。另外,我必须从外部传递属性值。我可以想到以下两种方法:



方法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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆