通过动态对象的Office互操作的枚举值

时间:2011-08-17 18:04:36

标签: office-interop dynamicobject

我在Silverlight-Ouf-Of-Browser应用程序中使用COM interop进行Word自动化。这意味着我不能直接引用COM,而是依赖于动态。

现在我想调用以下方法:

Range.Collapse(WdCollapseDirection direction)。

如何找出映射到各个枚举值的值(例如,wdCollapseEnd的值是1还是2)?

亲切的问候!

PS:有关方法签名的更多信息,请参阅http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word.range.collapse

1 个答案:

答案 0 :(得分:2)

Reflector这样的工具使这很简单。您甚至可以使用.NET Framework的一部分附带的ILDASM。

您可以使用这两个工具之一加载Primary Interop Assembly。 Reflector将C#源显示为:

public enum WdCollapseDirection
{
    wdCollapseEnd,
    wdCollapseStart
}

由于它们没有显式值,wdCollapseEnd为0且wdCollapseStart为1.我们可以使用IL视图进行确认:

.class public auto ansi sealed WdCollapseDirection
    extends [mscorlib]System.Enum
{
    .field public specialname rtspecialname int32 value__

    .field public static literal valuetype Microsoft.Office.Interop.Word.WdCollapseDirection wdCollapseEnd = int32(0)

    .field public static literal valuetype Microsoft.Office.Interop.Word.WdCollapseDirection wdCollapseStart = int32(1)

}

ILDASM显示了这一点:

.field public static literal valuetype Microsoft.Office.Interop.Word.WdCollapseDirection wdCollapseEnd = int32(0x00000000)

如果您有像Resharper这样的工具,直接在Visual Studio中对其执行 Ctrl + Q 会显示:

enter image description here

您可以使用虚拟项目来查找值。

作为一个附加选项,如果您使用LINQPad,您可以引用Word主要互操作程序集(Microsoft.Office.Interop.Word - 应该在GAC中)并运行它:

void Main()
{
    var value = (int) Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseStart;
    Console.Out.WriteLine("value = {0}", value);
}