Com 我是否需要在4.0';动态';变量?

Com 我是否需要在4.0';动态';变量?,com,dynamic,Com,Dynamic,我有以下C#代码: 我的问题是,我是否需要在名为foo的变量上使用Marshal.ReleaseComObject 如果我以通常的方式使用反射来调用COM对象上的方法,我通常会这样做,但是由于dynamic是关于后期绑定和魔术的,我想知道dynamic类型的变量是否会为我解决这个问题 谢谢,除非你真的知道自己在做什么 dynamic不会有什么不同动态只是对对象调用方法的一种不同方式;它根本不会影响对象。我阅读了上面的链接,认为它不适用于我的情况。我没有使用COM互操作程序集或RCW,至少没有使用

我有以下C#代码:

我的问题是,我是否需要在名为foo的变量上使用Marshal.ReleaseComObject

如果我以通常的方式使用反射来调用COM对象上的方法,我通常会这样做,但是由于dynamic是关于后期绑定和魔术的,我想知道dynamic类型的变量是否会为我解决这个问题

谢谢,除非你真的知道自己在做什么


dynamic
不会有什么不同<代码>动态只是对对象调用方法的一种不同方式;它根本不会影响对象。

我阅读了上面的链接,认为它不适用于我的情况。我没有使用COM互操作程序集或RCW,至少没有使用编译器选项生成的程序集或RCW来执行此操作(忘记它是哪一个)。在我的情况下,我创建它并通过反射调用方法,我希望明确控制对象的生存期,即:我希望它尽快消失,而不是等到垃圾回收。@Wes:
dynamic
不会有任何区别。它只是控制方法的执行。我接受这个答案,但注意到我不同意链接的中心前提,正如一位评论者所说的那样,“X被认为是危险的”对于X的所有值。SLak的评论:动态是我愿意接受的答案
int CallFooMethod()
{
   Type type = TypeDelegator.GetTypeFromProgID("SomeCOMDll.SomeCOMClass");

   dynamic foo = Activator.CreateInstance(type);

   return (int)foo.Foo();
}