C ++ / CLI中使用的动态C#对象

我目前正在构建一个c ++ / cli互操作库。 该库将由c#和vb.net应用程序使用,我想使用.Net 4动态类型。 我有一个配置模块使用动态成员访问来引用配置键,这在c#中工作得很好但是在c ++ / cli中给我带来麻烦(并非完全出乎意料)有没有办法在C ++ / CLI中使用这个库(例如通过直接调用TryGetMember()或其他东西)? 如果C ++ / CLI库然后将动态配置传递给用C#编写的派生类,那么C#是否仍然能够使用动态成员访问? 请注意,基类是在c ++ / cli中定义的,因此我无法使用dynamic关键字。 (或者我会吗?)

有一个开源库,ImpromptuInterface(通过nuget找到),当涉及到dynamic关键字时,它简化了c#编译器使用的api,我认为它适用于c ++ / cli,因为它们只是静态的c#函数。 我知道它在F#中工作,也没有DLR支持。

这是一个动态调用列表 ,它可以做。

C#/ VB动态类型由编译器转换为普通类型和方法调用。 生成的IL有点复杂,但不以任何方式特殊。 您绝对可以编写生成类似IL的C ++ / CLI代码。

编写C ++ / CLI代码的最简单方法可能是编写在C#中使用动态类型的代码,然后使用Reflector将程序集反编译为C ++ / CLI。