c# – IList的默认getter
发布时间:2020-12-16 00:11:05 所属栏目:百科 来源:网络整理
导读:我正在开始构建一个C#应用程序,而且我的眼中有一点刺: 我的大多数类都有一堆属性,如下所示: private IListAddress _addresses;private IListPhone _phones;public virtual IListAddress Addresses{ get { if (_addresses == null) _addresses = new ListAd
我正在开始构建一个C#应用程序,而且我的眼中有一点刺:
我的大多数类都有一堆属性,如下所示: private IList<Address> _addresses; private IList<Phone> _phones; public virtual IList<Address> Addresses { get { if (_addresses == null) _addresses = new List<Address>(); return _addresses; } set { _addresses = value; } } public virtual IList<Phone> Phones { get { if (_phones == null) _phones = new List<Phone>(); return _phones; } set { _phones = value; } } 我想知道,有没有办法在一个地方定义这种行为(具体来说,默认的getter),并重用它?我应该以某种方式扩展IList吗? 就像我可以使用 public virtual string Temp { get; set; } 代替: private string _temp; public virtual string Temp { get { return _temp; } set { _temp = value; } } 解决方法
我会在等待C#6时创建一个静态辅助函数,这就是我在MVVM框架中的选择.我认为这是一个相当普遍的实现,可以添加更多的重载来处理极端情况.
public static class PropertyHelper { public static T Get<T,U>(ref T backingField,U initialValue = null) where T : class where U : class,T,new() { initialValue = initialValue ?? new U(); return backingField ?? (backingField = initialValue); } } public class MyClass { private IList<int> myVar; public IList<int> MyProperty { get { return PropertyHelper.Get<IList<int>,List<int>>(ref myVar); } set { myVar = value; } } private IList<int> myVar2; public IList<int> MyProperty2 { get { return PropertyHelper.Get(ref myVar2,new List<int>()); } set { myVar2 = value; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |