Создайте список того же типа, что и свойство класса - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу создать список, содержащий все значения, которые имеет свойство в списке определенного класса, и добавить эти значения в другой список, тип которого совпадает со свойством класса.

Предположим, у меня естькласс Book:

public class Book{
    public int code;
    public string genre;
    public string author;
    public string synopsis;
}

Затем у меня есть метод с List<Book> myList, содержащий несколько книг, и я хочу заполнить список bookCodes, который должен быть того же типа, что и код свойства Book.Я не хочу изменять объявление списка BookCodes List<int> myBookCodes, если когда-нибудь свойство code изменится, например, с int на long или Guid.

Я пыталсятакие вещи, как

var myBookCodes = new List<typeof(Books.code)>

Но я получаю ошибку "Ожидаемый тип".

Я также пытался использовать отражение, но я также получал ошибки:

System.Reflection.PropertyInfo bookCodeProperty = typeof(Book).GetProperty("code");
Type bookCodeType = bookCodeProperty.PropertyType;

var myBookCodes = new List <>(bookCodeType)

Но в этом случае компилятор жалуется: «bookCodeType - это переменная, но она используется как тип».

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 21 сентября 2018

Это просто ... вы просто проецируете список, и тип позаботится о вас:

List<Book> myList ...
var codesList = myList.Select(b => b.code).ToList();

если когда-нибудь свойство кода изменится с int на long или Guid

Тогда код все еще работает, и теперь это новый тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...