父母阶层的受保护财产

时间:2015-12-23 08:01:53

标签: c#

我正在使用名为“Contribuable”的父类属性,然后在执行期间调用了一个名为“ContribuableMoral”的派生类,但它在null派生类方法中出现。

public class contribuable
{
    protected string MATRICULE_FISCALE;

    public contribuable(string _matricule_fiscale)
    {
        this.MATRICULE_FISCALE = _matricule_fiscale; //example MATRICULE_FISCALE=123456789
    }

    public void insertContribuable()
    {
        string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" +this.MATRICULE_FISCALE +"')"; //MATRICULE_FISCALE=123456789
    }
}
}

class ContribuableMoral : contribuable
{
    public ContribuableMoral()
    {
    }

    public void InsertionMorale()
    {
        string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MATRICULE_FISCALE + "')"; //MATRICULE_FISCALE=null
    }
}

通常所有权亲属告诉该类可以调用派生类吗?

3 个答案:

答案 0 :(得分:0)

嗯,像这样的代码首先不会编译.. 但问题是你的派生类没有传递_matricule_fiscale的基类的构造函数。 添加构造函数:

public ContribuableMoral(string _matricule_fiscale) : base (_matricule_fiscale) { }

到ContribuableMoral类。

答案 1 :(得分:0)

您应该为在父类中传递的构造函数提供参数,例如:

public ContribuableMoral(string _matricule_fiscale) : base(_matricule_fiscale)

然后它会起作用,还有其他一些错误。

下面修复的课程:

public class contribuable
{
    protected string MATRICULE_FISCALE;

    public contribuable(string _matricule_fiscale)
    {
        this.MATRICULE_FISCALE = _matricule_fiscale; //example MATRICULE_FISCALE=123456789}

    }
    public void insertContribuable()
    {
        string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" + this.MATRICULE_FISCALE + "')";
        //MATRICULE_FISCALE=123456789
    }
}

internal class ContribuableMoral : contribuable
{
    public ContribuableMoral(string _matricule_fiscale) : base(_matricule_fiscale)
    {
    }

    public void InsertionMorale()
    {
        string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MATRICULE_FISCALE + "')";
        //MATRICULE_FISCALE=null
    }
}

要调用此用途:

var c = new ContribuableMoral("123456789");
c.InsertionMorale();

答案 2 :(得分:0)

之所以发生这种情况是因为Contribuable没有从ContribuableMoral调用class ContribuableMoral : Contribuable { public ContribuableMoral() : base("somestring") { } 参数化构造函数。

应该是:

class ContribuableMoral : Contribuable 
{
    public ContribuableMoral(string matriculeFiscale) : base(matriculeFiscale)
    {
    }    

public class Contribuable
{
    protected string MatriculeFiscale { get; }

    public Contribuable(string matriculeFiscale)
    {
        MatriculeFiscale = matriculeFiscale; 
    }

    public void InsertContribuable()
    {
        string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" + MatriculeFiscale  +"')";
    }   
}

class ContribuableMoral : Contribuable 
{
    public ContribuableMoral(string matriculeFiscale) : base(matriculeFiscale)
    {
    }

    public void InsertionMorale()
    {
        string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MatriculeFiscale + "')";
    }
}

注1 :请查看以下代码样式,并以类似的方式设置代码格式,以便让其他人了解您。

if(gtk_window_is_active(main_window)) {

注2:您的代码现在容易受到SQL注入攻击。不要使用字符串连接来构建SQL查询。