Мне кажется, что это очень странная вещь. Если вы хотите выполнить некоторую очистку, вы можете рассмотреть возможность использования нестатических классов или чего-то еще. Опять же, это действительно пахнет плохим дизайном для меня, но я не могу посоветовать вам лучший способ, потому что я до сих пор не знаю почему вы пытаетесь это сделать.
Если вы уверены, что хотите это сделать, то, похоже, нет способа получить список всех используемых типов напрямую. Но вы можете сохранить список всех используемых созданных типов в каком-то другом неуниверсальном типе и добавить к нему статический конструктор.
Но если все, что вы хотите сделать, это вызвать DoX()
для всех типов, вам фактически не нужен список типов, вы можете использовать список делегатов для DoX()
для всех используемых типов. Это может выглядеть примерно так:
class MyClass<T>
{
static MyClass()
{
MyClass.DoXDelegates.Add(DoX);
}
public static void DoX() { /* whatever */ }
}
static class MyClass
{
private static readonly List<Action> s_DoXDelegates = new List<Action>();
internal static List<Action> DoXDelegates
{
get { return s_DoXDelegates; }
}
internal static void DoXForAll()
{
foreach (var doXDelegate in DoXDelegates)
doXDelegate();
}
}