Как получить все общие параметры класса? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть абстрактный класс с несколькими или многими (от 1 до 16) общими параметрами, например, так:

public abstract class ComponentSystem<F1> : ComponentSystemBase
    where F1 : IComponent
{ }

public abstract class ComponentSystem<F1, F2> : ComponentSystemBase
    where F1 : IComponent
    where F2 : IComponent
{ }

public abstract class ComponentSystem<F1, F2, F3> : ComponentSystemBase
    where F1 : IComponent
    where F2 : IComponent
    where F3 : IComponent
{ }

public abstract class ComponentSystem<F1, F2, F3, F4> : ComponentSystemBase
    where F1 : IComponent
    where F2 : IComponent
    where F3 : IComponent
    where F4 : IComponent
{ }

Теперь у меня есть базовый класс, который содержит список типов, таких какИтак:

public abstract class ComponentSystemBase
{
    public List<Type> Filters { get; private set; }
    public abstract void Init();
    public abstract void Update();
    protected internal void PopulateFilterList(Type[] filters)
    {
        // oneliner?
        foreach (Type filter in filters)
        {
            Filters.Add(filter);
        }
    }
}

Теперь мой вопрос: как мне получить все универсальные параметры в массиве типов, чтобы я мог передать его своей функции, которая добавляет ее в список?

Есть ли функция для получения всех общих параметров, нужно ли делать это вручную для каждого класса?

Если что-то неясно, дайте мне знать, чтобы я мог уточнить!

1 Ответ

3 голосов
/ 14 октября 2019

Отражение на помощь!

Type[] types = GetType().GetGenericArguments();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...