Пример программы консоли.
class Program
{
    static void Main(string[] args)
    {
        // ... code to build dll ... not written yet ...
        Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll");
        // don't know what or how to cast here
        // looking for a better way to do next 3 lines
        IRunnable r = assembly.CreateInstance("TestRunner");
        if (r == null) throw new Exception("broke");
        r.Run();
    }
}
Я хочу динамически строить сборку (DLL), а затем загружать сборку, создавать экземпляр класса и вызывать метод Run() этого класса. Должен ли я попробовать что-то отличить класс TestRunner? Не знаете, как типы в одной сборке (динамическом коде) будут знать о моих типах в моем (статическое приложение сборки/оболочки). Лучше просто использовать несколько строк кода отражения, чтобы вызвать Run() только на одном объекте? Как выглядит этот код?
UPDATE: Уильям Эдмондсон - см. Комментарий