基于.NET中建構(gòu)子中傳遞子對(duì)象的對(duì)象詳解
namespace Test001
{
public class ParentClass
{
// Constructors
public ParentClass(IEnumerable<string> dataCollection)
{
this.DataCollection = dataCollection;
}
// Properties
public IEnumerable<string> DataCollection { get; private set; }
}
public class ChildClass : ParentClass
{
// Constructors
public ChildClass() : base(new List<string>()) { }
}
}
但是如果子對(duì)象,要使用這個(gè)傳遞給父對(duì)象的參數(shù),就需要一點(diǎn)小技巧才能取得了。先來(lái)看一開始解決的想法是,先建立子對(duì)象的屬性對(duì)象,然后再傳遞給父對(duì)象。這個(gè)方法很快就失敗,光是編譯就不過(guò)了….。對(duì)象的建立是先跑建構(gòu)子、然后生出對(duì)象。在建構(gòu)子的階段,就要使用對(duì)象的屬性,一定是失敗的。
namespace Test002
{
public class ParentClass
{
// Constructors
public ParentClass(IEnumerable<string> dataCollection)
{
this.DataCollection = dataCollection;
}
// Properties
public IEnumerable<string> DataCollection { get; private set; }
}
public class ChildClass : ParentClass
{
// Fields
private readonly List<string> _dataCollection = new List<string>();
// Constructors
private ChildClass() : base(_dataCollection) { }
}
}
想了一下,換個(gè)角度去解決這個(gè)問(wèn)題。干脆另外再開一個(gè)子對(duì)象的建構(gòu)子,先建立要傳給父對(duì)象的對(duì)象,然后不直接傳給父對(duì)象的建構(gòu)子,而是傳給子對(duì)象自己的建構(gòu)子,然后這個(gè)建構(gòu)子在傳遞給父對(duì)象。寫到我眼睛都花了,好像繞口令….。直接看程序代碼吧,其實(shí)還蠻簡(jiǎn)單就可以完成這個(gè)小小的設(shè)計(jì):
namespace Test003
{
public class ParentClass
{
// Constructors
public ParentClass(IEnumerable<string> dataCollection)
{
this.DataCollection = dataCollection;
}
// Properties
public IEnumerable<string> DataCollection { get; private set; }
}
public class ChildClass : ParentClass
{
// Fields
private readonly List<string> _dataCollection = null;
// Constructors
public ChildClass() : this(new List<string>()) { }
private ChildClass(List<string> dataCollection)
: base(dataCollection)
{
_dataCollection = dataCollection;
}
}
}
相關(guān)文章
asp.net實(shí)現(xiàn)固定GridView標(biāo)題欄的方法(凍結(jié)列功能)
這篇文章主要介紹了asp.net實(shí)現(xiàn)固定GridView標(biāo)題欄的方法,即凍結(jié)列功能,涉及GridView結(jié)合前端js操作數(shù)據(jù)顯示的相關(guān)技巧,需要的朋友可以參考下2016-06-06asp.net直接Response輸出WML頁(yè)面示例代碼
本例實(shí)現(xiàn)直接Response輸出WML頁(yè)面,具體代碼如下,有需要的朋友可以和參考下2013-08-08詳解ASP.NET Core MVC 源碼學(xué)習(xí):Routing 路由
本篇文章主要介紹了詳解ASP.NET Core MVC 源碼學(xué)習(xí):Routing 路由 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03asp.net(c#)下各種進(jìn)制間的輕松轉(zhuǎn)換(2進(jìn)制、8進(jìn)制、10進(jìn)制、16進(jìn)制)
在.NET Framework中,System.Convert類中提供了較為全面的各種類型、數(shù)值之間的轉(zhuǎn)換功能。2010-10-10ASP.NET Core環(huán)境設(shè)置教程(2)
這篇文章主要為大家詳細(xì)介紹了Asp.net Core環(huán)境設(shè)置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06asp.net 支持多語(yǔ)言站點(diǎn)的實(shí)現(xiàn)方法
asp.net 支持多語(yǔ)言站點(diǎn)的實(shí)現(xiàn)方法,對(duì)于想用asp.net做多語(yǔ)言網(wǎng)站的朋友可以參考下,充分發(fā)揮asp.net的功能。2010-03-03使用Hangfire+.NET?6實(shí)現(xiàn)定時(shí)任務(wù)管理(推薦)
這篇文章主要介紹了使用Hangfire+.NET?6實(shí)現(xiàn)定時(shí)任務(wù)管理,通過(guò)引入Hangfire相關(guān)的Nuget包并對(duì)Hangfire進(jìn)行服務(wù)配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10asp.net C#實(shí)現(xiàn)解壓縮文件的方法
這篇文章主要介紹了asp.net C#實(shí)現(xiàn)解壓縮文件的方法,分別講述了三種不同的實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11