c # / vb.net и т. Д. Являются статически типизированными языками.Следовательно, если у вас есть тип, у которого нет метода Start
, код не будет компилироваться.
dynamic
ключевое слово устраняет разрыв между статическими языками и динамическими языками.
, т.е.метод не существует, проверяется во время выполнения в случае динамических языков.
Из вашего примера Start
, Stop
, 'GetSomeStuff method exists and your code is aware of it. Moreover,
dynamic` не имеет ничего общего с динамической загрузкой сборки.
Я думаю, вам нужен какой-томодель типа «плагин / провайдер», при которой у вас будет базовый интерфейс, который будет подтверждать ваш класс (ы) реализации.
например,
interface IService
{
void Start();
void Stop();
int GetSomeStuff();
}
И классы реализации (которые будутв отдельной сборке) подтвердит этот интерфейс, который вы будете загружать динамически и приводить к этому интерфейсу (IService
) в своем коде.
Внедрение / инверсия зависимости - это концепция, которая приходит мне в голову, который, я думаю, должен служить тому, что вы ищете.