处理所有对象的通用函数

时间:2013-12-04 15:10:09

标签: asp.net-mvc-4

我为一个拥有电子邮件地址的“人”建立了一个模型。

public class Person{
     public string name;
     public List<Email> email;
}

public class Email : Primary {
     public string emailAddress;
}

public class Primary {
     public bool IsPrimary;
}

当我在Razor中显示时,我只想显示设置为primary == true的电子邮件。

我想写一个函数方法,因为我有许多从Primary(地址,提供者等)继承的集合

<div class="value">
                @getPrimary(Model.Email)
</div>

@functions{
     public T getPrimary <T> (List<T> collection){
          foreach (T thing in collection){
               ??? if (((Primary)thing).primary) ???
          }
     }
}

有没有办法做到这一点......?

我不想要的是针对我所有不同类型的测试列表。我真的很喜欢一个简单的“你从primary继承,因此我可以测试从你传入的列表中返回主记录”。这有帮助吗?

由于

======================================== RESOLUTION ====== ==============================

public T getPrimary<t>(List<T> collection) where T : HasPrimary
{
    var d = collection.OfType<HasPrimary>().Where(i => i.Primary);
    if (d.Count() == 0)
        return (T)collection.FirstOrDefault();
    return (T)d.FirstOrDefault();
}

1 个答案:

答案 0 :(得分:0)