Перечисление значений для взаимодействия Office через динамический объект - PullRequest
2 голосов
/ 17 августа 2011

Я использую COM-взаимодействие для автоматизации Word в приложении Silverlight-Ouf-Of-Browser. Это означает, что я не могу ссылаться на COM напрямую, а вместо этого полагаюсь на динамику.

Теперь я хотел бы вызвать следующий метод:

Range.Collapse (направление WdCollapseDirection).

Как узнать, какие значения сопоставлены с отдельными значениями перечисления (например, имеет ли значение wdCollapseEnd значение 1 или 2)?

С уважением!

PS: Подробнее о сигнатуре метода см. http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word.range.collapse

1 Ответ

2 голосов
/ 17 августа 2011

Инструменты типа Отражатель делают это довольно просто. Вы даже можете использовать ILDASM, который входит в состав .NET Framework.

Вы можете загрузить Первичную сборку взаимодействия любым из этих двух инструментов. Отражатель показывает источник 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, выполнение Ctrl + Q непосредственно из Visual Studio показывает это:

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);
}
...