2

我在我的 Silverlight-Ouf-Of-Browser 应用程序中使用 COM 互操作来实现 Word 自动化。这意味着我不能直接引用 COM,而是依赖动态。

现在我想调用以下方法:

Range.Collapse(WdCollapseDirection 方向)。

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

亲切的问候!

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

4

1 回答 1

2

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

您可以使用这两个工具中的任何一个加载主互操作程序集。Reflector 将 C# 源代码显示为:

public enum WdCollapseDirection
{
    wdCollapseEnd,
    wdCollapseStart
}

由于它们没有明确的值,wdCollapseEnd是 0 和wdCollapseStart1。我们可以用 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

在此处输入图像描述

您可以有一个虚拟项目,您可以使用它来查找值。

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

void Main()
{
    var value = (int) Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseStart;
    Console.Out.WriteLine("value = {0}", value);
}
于 2011-08-17T18:16:40.997 回答