2016-08-03 17 views
0

私は正確にReportDataSource(ReportObject obj)として動作ReportDataSource(ReportObject obj, string alias)コンストラクタで次のクラス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; 
    } 

} 

を持っています。唯一の違いは、aliasプロパティを上書きできることです。

ReportDataSource(ReportObject obj)ReportDataSource(ReportObject obj, string alias)の中から呼び出せる方法はありますか?コードを複製する必要はありませんか?

「オブジェクトの1つの引数私は別のコンストラクタを呼び出すことができますどのように

を取るコンストラクタが含まれていない私は、この

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

を試してみましたが、私はこのエラーに

を取得からのコンストラクタでのC#?

答えて

2

thisをお試しください:

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

それは時々を連鎖コンストラクタと呼ばれています。クラス自体のインスタンスコンストラクタを引き起こす

形態この(引数リストOPT)のインスタンスコンストラクタ初期化子が呼び出されます。コンストラクタは、引数リストと§7.5.3の過負荷解決規則を使用して選択されます。

+0

これは機能しました。ありがとうございました。時間が許せばあなたの答えを受け入れる – Jaylen

関連する問題