Вы могли добавить его:
public static IEnumerable OrderBy( this IEnumerable input, string queryString) {
//parse the string into property names
//Use reflection to get and sort by properties
//something like
foreach( string propname in queryString.Split(','))
input.OrderBy( x => GetPropertyValue( x, propname ) );
// I used Kjetil Watnedal's reflection example
}
Эти GetPropertyValue
функция от ответ Kjetil Watnedal
, проблема была бы то, почему? Любой такой вид выдал бы исключения во времени выполнения, а не время компиляции (как ответ D2VIANT).
, Если Вы имеете дело с Linq к Sql и orderby, дерево выражений, это будет преобразовано в SQL для выполнения так или иначе.
Насколько я знаю, существует только выход из такой коллекции для IComponents - Контейнер реализует IContainer . Я думаю, что для универсального IDisposable у вас нет других вариантов, кроме «изобретать велосипед».
Я понимаю, о чем вы спрашиваете, но насколько сложно создать собственный метод удаления, который удаляет элемент, прежде чем вы его удалите?
Помните, что ваша коллекция может быть не единственной, содержащей предметы одноразового использования ... Что, если другой объект (внешний по отношению к коллекции) ссылается на один из них? Если вы удалите его при удалении коллекции, что тогда произойдет с объектом?
Если эти объекты реализуют IDisposable
для очистки некоторых неуправляемых ресурсов, убедитесь, что они также реализуют финализацию и удаляют неуправляемые ресурсы там.