Если Вы не знаете тип во время компиляции, но Вы хотите фактический тип (т.е. не List<object>
) , и Вы не находитесь в общем методе / тип с соответствующим параметром типа, то необходимо использовать отражение.
Для создания отражения более простым я иногда представлял новый универсальный тип или метод в моем собственном коде, таким образом, я могу назвать это отражением, но тогда просто использовать нормальные дженерики после этого. Например:
object x = GetObjectFromSomewhere();
// I want to create a List<?> containing the existing
// object, but strongly typed to the "right" type depending
// on the type of the value of x
MethodInfo method = GetType().GetMethod("BuildListHelper");
method = method.MakeGenericMethod(new Type[] { x.GetType() });
object list = method.Invoke(this, new object[] { x });
// Later
public IList<T> BuildListHelper<T>(T item)
{
List<T> list = new List<T>();
list.Add(item);
return list;
}
, Конечно, Вы не можете сделать очень много со списком впоследствии, если Вы не знаете тип... вот почему, такого рода вещь часто падает. Не всегда, хотя - я использовал что-то как вышеупомянутое в нескольких случаях, где система типов просто не вполне позволяет мне выразить все, которое я должен статически.
РЕДАКТИРОВАНИЕ: Обратите внимание на это, хотя я называю Тип. GetMethod в коде выше, если бы Вы собирались выполнить его много, который Вы, вероятно, хотели бы просто назвать им однажды - в конце концов, метод, не собирается изменяться. Можно быть в состоянии сделать его статичным (Вы могли в случае выше), и Вы, вероятно, хотите сделать его частным также. Я оставил его, как общедоступный метод экземпляра для простоты GetMethod звонит в пример кода - необходимо будет определить соответствующие обязательные флаги иначе.
Вы можете получить эту функциональность в Netbeans, как описано в этой статье, из пекарни.
http://bakery.cakephp.org/articles/view/model-based-code-insight -and-Completion-in-netbeans
То же самое можно сделать в Eclipse PDT или Aptana.
http://mark-story.com/posts/view/code-completion-for-cakephp-in -eclipse
Все эти IDE бесплатны. Хотя они оба
Теперь netbeans имеет плагин для CakePHP.
Это не IDE, но если вы пользователь textmate, то есть пакет для CakePHP: http://thechaw.com/cakephp_tmbundle
Komodo Edit имеет надстройку CakePHP и макрос для облегчения навигации MVC .
Он построен на базе кода Mozilla so аналогично расширяется с помощью надстроек, имеет эквивалентное потребление памяти / скорость и лицензируется на тех же условиях.
Чуть не забыл упомянуть, что это также кроссплатформенный .