【问题标题】:Enum values for Office interop via dynamic object通过动态对象进行 Office 互操作的枚举值
【发布时间】:2011-08-17 18:04:36
【问题描述】:

我在我的 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

【问题讨论】:

    标签: office-interop dynamicobject


    【解决方案1】:

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

    您可以使用这两个工具中的任何一个加载主互操作程序集。 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 会显示:

    您可以有一个虚拟项目来查找值。

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

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

    【讨论】:

    • 谢谢,看起来比我想象的要容易。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2018-05-27
    • 2017-08-01
    • 2014-06-24
    • 1970-01-01
    相关资源
    最近更新 更多