У меня есть модель, построенная для «человека», которая имеет адреса электронной почты.Общая функция для обработки всех объектов
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) ???
}
}
}
Есть ли способ сделать это ....?
То, что я не хочу, это список тестов по всем моим различным типам. Мне бы очень хотелось простую «Наследовать от первичного, поэтому я могу проверить, чтобы вернуть основную запись из списка, в который вы проходили». Это помогает?
Благодаря
======================================== РЕШЕНИЕ ====================================
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();
}
Мне сложно понять, в чем заключается ваш вопрос. Вы ищете ограничения на параметры типового типа? – SBI