如何从c#中的构造函数中调用不同的构造函数?

时间:2016-08-03 23:44:34

标签: c#

我有以下课程

public class ReportDataSource : IReportDataSource
{
    public string Name { get; set; }
    public string Alias { get; set; }
    public string Schema { get; set; }
    public string Server { get; set; }

    public ReportDataSource()
    {
    }

    public ReportDataSource(ReportObject obj)
    {
        this.Name = obj.Name;
        this.Alias = obj.Alias;
        this.Schema = obj.Schema;
        this.Server = obj.Server;
    }

    public ReportDataSource(ReportObject obj, string alias)
    {
        this.Name = obj.Name;
        this.Schema = obj.Schema;
        this.Server = obj.Server;

        this.Alias = alias;
    }

}

在构造函数ReportDataSource(ReportObject obj, string alias)中,行为与ReportDataSource(ReportObject obj)完全相同。唯一不同的是我可以覆盖alias属性。

有没有办法可以从ReportDataSource(ReportObject obj)内拨打ReportDataSource(ReportObject obj, string alias),这样我就不必复制我的代码?

我试过这个

    public ReportDataSource(ReportObject obj, string alias)
        :base(obj)
    {
        this.Alias = alias;
    }

但我收到此错误

  

'对象'不包含带有1个参数的构造函数

如何在c#中的构造函数中调用不同的构造函数?

1 个答案:

答案 0 :(得分:2)

尝试this

public ReportDataSource(ReportObject obj, string alias)
    :this(obj)
{
    this.Alias = alias;
}

有时称为构造函数链接

  

this( 参数列表 opt )形式的实例构造函数初始值设定项导致调用类本身的实例构造函数。使用 argument-list 和§7.5.3的重载决策规则选择构造函数。