Предоставление перечислений .NET для COM-клиентов {VBScript} - PullRequest
1 голос
/ 12 апреля 2010

Я пытаюсь создать PoC для показа / вызова различных объектов .NET из COM-клиентов. Библиотека .NET содержит некоторые классы и перечисления.

Я могу успешно получить доступ к классам в VBScript, но не могу получить доступ к перечислениям. Я знаю, что Enums являются типами значений и, следовательно, «CreateObject» не будет работать в этом случае.

Но я могу получить доступ к тому же Enum в коде VBA.

Вопросы:

  • Как получить доступ к перечислениям в VBScript?

  • Почему поведение двух COM-клиентов отличается? Если объектный браузер VBA может видеть перечисление, почему VBScript не позволяет мне его создать?

.NET

  [ComVisible(true)]
[GuidAttribute("ebc25cf6-9120-4283-b972-0e5520d0000E")]        
public enum Currency
{        
    GBP = CurrencyConvertorBL.CurrencyConvertorRef.Currency.GBP,        
    USD = CurrencyConvertorBL.CurrencyConvertorRef.Currency.USD,        
    INR = CurrencyConvertorBL.CurrencyConvertorRef.Currency.INR,
    AUD = CurrencyConvertorBL.CurrencyConvertorRef.Currency.AUD
}

1022 * VBA *

    Private Function ConvertCurrency(fromCurrency As Currency, 
toCurrency As Currency) As Double

VBScript ???

Set currencyConvertorCCY = CreateObject("CurrencyConvertorBL.Currency")

Заранее спасибо.

1 Ответ

0 голосов
/ 15 апреля 2010

Currency - это встроенный тип данных в VBA, числовой. Вы должны добавить префикс enum к имени typelib, чтобы компилятор не был неоднозначным, т.е. fromCurrency As MyProject.Currency.

Для VBScript попробуйте эту статью: Как я могу получить доступ к библиотеке типов из скрипта?

...