для форматирования списка элементов, которые реализуют определенный интерфейс. При попытке использовать данный метод получаю ошибку, что невозможно привести один список к другому. Как тогда реализовать данный функционал?
interface IFomattable
{
decimal Id { get; set; }
string Type { get; set; }
DateTime Date { get; set; }
}
public class Foo : IFomattable
{
public decimal Id { get; set; }
public string Type { get; set; }
public DateTime Date { get; set; }
}
public class Bar : IFomattable
{
public decimal Id { get; set; }
public string Type { get; set; }
public DateTime Date { get; set; }
}
public class Formatter
{
public static string FormatDates(List<IFormattable> items)
{
return "dates str";
}
}
если ты хочешь список List<Bar> превратить в List<IFormattable>, то система типов не разрешает так делать. Можно сделать это через Unsafe или через Linq - там есть метод который кастит каждый элемент
А так вообще стоит делать? Просто я хотел завязать этот метод на абстракцию и отвязать от реализации конкретного класса
покажи что именно ты хочешь
Хочу сделать так, чтобы можно было вызывать данный метод для списков Foo и списков Bar. Забыл ещё написать, что этот метод статический, т.е. такое решение не прокатит, если правильно понимаю.
ну тогда public static Format<T>(List<T> list) where T: IFormattable
Стало понятнее, пойду курить дженерики, спасибо большое за помощь. )
Обсуждают сегодня