Пример, когда не хватает анонимных классов
С анонимными делегатами можно, но кривоnew DropDownListBinder<Product>(..., x => new DropDownItemBinder(x.Name, x.Id
?
new DropDownListBinder<Product>(..., x => new DropDownItemBinder(x.Name, x.Idне то. Для каждого свойства должна быть своя функция, и у функции должно быть имя.
new DropDownItemBinder(x.Name, x.Idу тебя создается хранилище, а это лишнее, которое потом возможно будет мешать. Тредования такие: нужны две (в общем случае несколько) функции, объединенные некоторой конструкцией.
вроде тоже самое:
IEnumerable<Product> products = //получаем из базы список продуктов
new DropDownListBinder<Product>(dropDownList1,
new DropDownItemBinder<Product>(data => data.Name, data => data.Id)
.SetData(products);
IEnumerable<Product> products = //получаем из базы список продуктовда, это самый прямой вариант, но тут у методов нет имени, т.е. по клду не видно, что Name дайндится к тексту.
new DropDownListBinder<Product>(dropDownList1,
new DropDownItemBinder<Product>(data => data.Name, data => data.Id)
.SetData(products);
У меня еще есть вот такой вариант
new DropDownListBinder<Product>(dropDownList1).Text(data => data.Name).Value(data => data.Id)..SetData(products).
Правда тут есть минус — можно забыть один из методов, а в анонимном классе они абстрактные. Спасибо
, в синтаксисе 3.0 это симпатичнее смотрится, но мы пока на 2.0, а там тип параметра делегата надо явно указывать, Решарпер конечно генерит его, но громоздко смотрится.еще, простым списком параметров передавать делегаты не удобно, потому что часто требуется разный набор методов. Делать кучу перегруженных методов не круто, и их число в общем случае растет как 2^n от числа параметров. А в случае анонимного класса просто перегружаешь нужные виртуальные/абстрактные методы.
Так же нельзя вызывать базовый метод base.Metthod1
Так же нельзя вызывать базовый метод base.Metthod1
но тут у методов нет именинаверное, инициализаторы эту проблему решают...
В C# 3.0 вроде есть анонимные классы.
В C# 3.0 вроде есть анонимные классы.это просто совпадение термина
Я плохо понял постановку данной конкретной задачи или они её решают?
Если первое, напиши подробнее, плз, что есть и что надо получить.
Если первое, напиши подробнее, плз, что есть и что надо получить.
анонимный класс в C# 3.0 - это просто tuple<> с возможность изменения имен полей, а не только типов полей.
методы, наследования, реализацию интерфейсов в такой анонимный класс добавить нельзя.
и соответственно задачу из данного треда они не решают
методы, наследования, реализацию интерфейсов в такой анонимный класс добавить нельзя.
и соответственно задачу из данного треда они не решают
у тебя создается хранилище, а это лишнее, которое потом возможно будет мешать.Может оно конечно и лишнее, но за удобство приходится платить, а каждый раз рисовать такого анонимного крокодила, имхо это жесть.
Оставить комментарий
6yrop
тут была тем о том, что в C# не хватает анонимных классов, было высказано мнение, что они заменяются анонимными делегатам. Приведу простой пример. Надо прибайндить к выпадающем списку коллекцию объектов, хочется это сделать типизировано. Вот как это выглядит с анонимным классомС анонимными делегатами можно, но криво