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

本文关键字:函数调用 构造函数 | 更新日期: 2023-09-27 18:00:02

我有以下类

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, string alias)内部调用ReportDataSource(ReportObject obj),这样我就不必重复我的代码了?

我试过这个

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

但是我收到这个错误

"object"不包含接受1个参数的构造函数

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

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

尝试this:

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

它有时被称为构造函数链接

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