Тема: Generics, використання змінної замість типу, можливо ?

Чи можливо створити об'єкт вказавши змінну замість типу
Наприклад
Перша частина класу MyClass генерується візуал студією (може його можна міняти, але я ще не пробував) відповідно я не можу написати MyClass<T> тому що це буде вже інший клас

Хотілося б написати так

public partial class MyClass : ContentView
{
    private IMyInterfaceToOneClass<object> IOneClass;
    // ...
    void Init(Type myType)
    {
        IOneClass = new OneClass<myType>();
    }

Але я отримую помилку конвертації типів. Навіть якщо оголосити змінну в серединні методу Init, звісно що нічого не вийде, тому що я отримаю помилку "Використання змінної як типу"

IMyInterfaceToOneClass<myType> IOneClass = new OneClass<myType>();

Чи можливо якось передати в якості параметра тип, і застосувати його при створенні generics об'єкту ?

2

Re: Generics, використання змінної замість типу, можливо ?

Ні, не можна. А нащо? Це ж не остаточна задача, правда? Ви намагаєтеся зробити щось інше, і сильно здогадуюся, що вам потрібен звичайний поліморфізм.

Подякували: Betterthanyou1

3

Re: Generics, використання змінної замість типу, можливо ?

Це не якась конкретна задача, просто цікаво було.

4

Re: Generics, використання змінної замість типу, можливо ?

Загалом типи живуть до моменту компіляції; у байткоді вже є лише операції з байтами (хоча ще є така хитра штука, як рефлексії). Під час виконання всі типи мають бути відомими.

Загалом можете вважати дженерик "опціональним" проголошенням, на кшталт "якщо хтось захоче викликати f<тип>, то треба буде згенерувати функцію (код)".

Утім, ніхто не забороняє зробити щось на кшталт

void Init<myType>()
{
    IOneClass = new OneClass<myType>();
}
Подякували: Betterthanyou1