Сценарий №: определить, является ли импортируемый тип пустым - PullRequest
2 голосов
/ 04 декабря 2010

Я пишу код, который вызывает внешнюю библиотеку JavaScript Foo, но только если определен Foo. Эквивалентный код JavaScript должен выглядеть примерно так:

if (typeof(Foo) != "undefined") {
  Foo.bar();
}

Я попробовал следующее в скрипте #:

  • if (! Script.IsNullOrDefined (Foo)): Мой проект требует aacorlib и не может использовать sscorlib, где определено IsNullOrDefined.
  • if (typeof (Foo) .ToString ()! = "Undefined"): В результате Foo.toString ()! == 'undefined', который завершится ошибкой, поскольку Foo не определен.
  • if ((string) Type.InvokeMethod (null, "typeof", "Foo")! = "Undefined"): Ошибка компиляции "Имя глобального метода должно быть допустимым идентификатором" , ссылаясь на "typeof".
  • if (Type.IsClass (typeof (Foo))): Сбой во время выполнения с ошибкой "Foo undefined".
  • if (typeof (Foo)! = Null): Выдает «if (Foo! = Null)», которое выдает ошибку «Foo undefined».

Как должен выглядеть код Script # для генерации этого кода JavaScript?

1 Ответ

1 голос
/ 10 декабря 2010
Script.Literal("if (typeof(Foo) != \"undefined\") { Foo.bar(); }");
...