我在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
答案 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 会显示:
您可以使用虚拟项目来查找值。
作为一个附加选项,如果您使用LINQPad,您可以引用Word主要互操作程序集(Microsoft.Office.Interop.Word - 应该在GAC中)并运行它:
void Main()
{
var value = (int) Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseStart;
Console.Out.WriteLine("value = {0}", value);
}