我有以下课程
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#中的构造函数中调用不同的构造函数?
答案 0 :(得分:2)
尝试this
:
public ReportDataSource(ReportObject obj, string alias)
:this(obj)
{
this.Alias = alias;
}
有时称为构造函数链接。
this( 参数列表 opt )形式的实例构造函数初始值设定项导致调用类本身的实例构造函数。使用 argument-list 和§7.5.3的重载决策规则选择构造函数。