Конечно, используйте Reflection.Emit для запекания вашего интерфейса, затем передайте сгенерированный тип интерфейса на CreateInterfaceProxyWithoutTarget
и предоставьте перехватчики.
Просто имейте в виду, что вы не можете выгрузить тип, только домен приложения, поэтомуесли вы собираетесь создавать тысячи типов, вы можете оказаться в мире плохой производительности.