Ответ на получение форматирования
Что произойдет, если вы сделаете
for(var i in data){
var record = data[i];
var recordId = record.id;
rows += '<tr id="' + recordId + '" class="' + record.status + '">';
rows += '<td width="1%" align="center">' + recordId + '</td>';
rows += '<td width="1%" align="center"><span class="status" rel="' + recordId + '"><strong>' + data[i].status + '</strong></span></td>';
rows += '<td width="70%"><span class="name">' + record.name + '</span></td>';
rows += '<td width="2%">';
rows += '<input type="button" class="failOne" rev="' + recordId + '" value="F">';
rows += '<input type="button" class="promoteOne" rev="' + recordId + '" value="P">';
rows += '</td>';
rows += '<td width="1%">' + record.origin + '</td>';
rows += '</tr>';
}//end for
Если я понимаю правильно, Ваш список имеет тот же параметр типа как сам контейнерный класс. Если это верно, затем:
Type typeParameterType = typeof(T);
, Если Вы находитесь в удачной ситуации наличия object
как параметр типа, см. ответ Marc .
(примечание: я предполагаю, что все, что Вы знаете, object
или IList
или подобно, и что список мог быть любым типом во времени выполнения)
, Если Вы знаете, что это List<T>
, затем:
Type type = abc.GetType().GetGenericArguments()[0];
Другая опция состоит в том, чтобы посмотреть на индексатор:
Type type = abc.GetType().GetProperty("Item").PropertyType;
Используя новый TypeInfo:
using System.Reflection;
// ...
var type = abc.GetType().GetTypeInfo().GenericTypeArguments[0];
Type:
type = list.AsEnumerable().SingleOrDefault().GetType();
Примите во внимание следующее: Я использую его для экспорта 20 типизированных списков таким же образом:
private void Generate<T>()
{
T item = (T)Activator.CreateInstance(typeof(T));
((T)item as DemomigrItemList).Initialize();
Type type = ((T)item as DemomigrItemList).AsEnumerable().FirstOrDefault().GetType();
if (type == null) return;
if (type != typeof(account)) //account is listitem in List<account>
{
((T)item as DemomigrItemList).CreateCSV(type);
}
}
Метод GetGenericArgument ()
должен быть установлен для базового типа вашего экземпляра.
(чей класс является универсальным классом myClass
). В противном случае он возвращает тип [0]
Пример:
Myclass<T> instance = new Myclass<T>();
Type[] listTypes = typeof(instance).BaseType.GetGenericArguments();