Как назначить абстрактный объект в производный объект Reflection.Emit - PullRequest
0 голосов
/ 26 сентября 2018

Здравствуйте, я столкнулся со следующей проблемой:

У меня есть абстрактный класс, который нужно каким-то образом инициализировать, прежде чем я смогу вызвать один из его async методов, в котором назначены его поля:

class Dependency {}

abstract class Relay : Abs.Api.IAll {

        private Dependency dep;

        public static async Task<Relay> RunAsync(Dependency _dep) {
            Relay daemon = // [ Reflection.Emit derived object]
            await daemon.InternalConnectAsync(port);
            return daemon;
        }
        private async Task InternalConnectAsync(Dependency _dep) {
            //async code//
            this.dep=_dep;
        }
    }
class AutoGeneratedRelay : Relay {
}

Как видите, объект Dependency dep инициализируется после того, как у меня есть concrete объект, полученный из Relay.
Проблема в том, что этот объект daemon будетназначенный производному объекту, полученному через Reflection.Emit, в нашем случае AutoGeneratedRelay. Я создаю производный класс с отражением, и я хочу получить его и назначить базовый объект daemon.

...