如何实现List <t,t>?

时间:2015-10-01 14:12:17

标签: c# list

我有一个对象列表:

  MyDisplayObjects = new List<ISave> { Patient, ServiceBilling, ReferredBy, POA, PrimaryInsurance, SecondaryInsurance };

每个对象继承自ISave以便

foreach (var o in MyDisplayObjects)
 {
  o.CanSaveEvent += new EventHandler<CanSaveEventArgs>(CanSaveEventHandler);
 }

完美无缺。

现在我希望为每个对象ISelfPay添加一个单独的接口,并执行:

  MyDisplayObjects = new List<ISave,ISelfPay> { Patient, ServiceBilling, ReferredBy, POA, PrimaryInsurance, SecondaryInsurance };

这样也会起作用:

foreach (var o in MyDisplayObjects)
{
  o.CanSaveEvent += new EventHandler<CanSaveEventArgs>(CanSaveEventHandler);
  this.SelfPayEvent += new EventHandler<SelfPayEventArgs>(o.CheckInViewModel_SelfPayEvent);
 }
  

错误:无法初始化List类型的对象&lt;&#39; ISave,ISelfPay&#39;&gt;用一个   集合初始化器。

我似乎无法为Google找到很多帮助。这是怎么做到的?

(我可以制作两个列表,但是如果可能的话,我想学习如何使用一个列表。:)

TIA

1 个答案:

答案 0 :(得分:6)

我假设您希望您的列表由可保存(ISave)和自付(ISelfPay)的项目填充

为了获得这种功能的编译时安全性,您必须定义一个包含这两个接口的单个​​接口。

public interface ISaveAndSelfPay : ISelfPay, ISave
{
}

var listOfSavableAndSelfPayableThings = new List<ISaveAndSelfPay>();