Поскольку опубликованный комментарий предлагает использовать StackFrame, он немного сложен и подвержен ошибкам.
Также я не уверен, что вы сможете получить информацию о закрытом типе универсального типа.
Но вы могли бы следовать другому подходу, при котором вы сохраняете List<Type>
, который уже был обработан.
Ниже приведены две версии метода CreateRepository
, который, как я полагаю, используется вами для создания репозиториев элементов.
private static List<Type> addedItemList; has the info of all the created types so far.
Версия - 1
public static Repository<T> CreateRepository(T item)
{
if (addedItemList.Contains<Type>(item.GetType()))
{
return new Repository<T> { Item = item };
}
addedItemList.Add(item.GetType());
return CreateRepository(item);
}
Версия 2
public static Repository<T> CreateRepository()
{
if (addedItemList.Contains<Type>(typeof(T)))
{
return new Repository<T> { Item = default(T) };
}
addedItemList.Add(typeof(T));
return CreateRepository();
}