2013-12-04 4 views
0

У меня есть модель, построенная для «человека», которая имеет адреса электронной почты.Общая функция для обработки всех объектов

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(); 
} 
+0

Мне сложно понять, в чем заключается ваш вопрос. Вы ищете ограничения на параметры типового типа? – SBI

ответ

Смежные вопросы