Перейти к содержимому

Фотография

Конвертация Jscript null в dotNet Null


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 ViktorUvpv

ViktorUvpv

    Новый участник

  • Members
  • Pip
  • 49 сообщений

Отправлено 02 февраля 2010 - 21:01

Всем привет. Столкнулся со сл. проблемой. Пишу автотесты на Jscript (TestComplete). Вызываю метод класса тестируемого приложения, которому нужно передать null. Вот в этом и заключается проблема т.к. выдает "Mismatch Types". Вызываю аналогичный метод, которому null не нужен - и все работает. Проблема в том, что Jscript null и dotNet Null - разные "вещи".

Скажите плз. как сконвертировать Jscript null и dotNet Null ?

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

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 04 февраля 2010 - 06:45

Здравствуйте.

Самым простым решением мне кажется получение нужного 'null' из какого-нибудь метода или свойства объекта приложения. Например:
var dotNetNull = Sys.Process("MyProcess").AppDomain("MyProcess").dotNET.System.Exception.zctor().InnerException;

  • 1
С уважением,
Дмитрий

#3 ViktorUvpv

ViktorUvpv

    Новый участник

  • Members
  • Pip
  • 49 сообщений

Отправлено 29 марта 2010 - 13:26

Всем привет))
Да. Вызывал .Net метод, который возвращает Null, но не помогло. Обходное решение все же было найдено. Программисты перегрузили нужный мне метод без Null параметра и вызвать его удалось))
Но как Вы понимаете - это не самое оптимальное решение(
  • 0

#4 MTdev

MTdev

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Терехов Максим

Отправлено 14 апреля 2010 - 11:47

Всем привет))
Да. Вызывал .Net метод, который возвращает Null, но не помогло. Обходное решение все же было найдено. Программисты перегрузили нужный мне метод без Null параметра и вызвать его удалось))
Но как Вы понимаете - это не самое оптимальное решение(

Сам столкнулся с такой проблемой. Долго ковырялся, потом пришел к выводу, что у неравенства [JScript null] != [.NET null] есть своя, глубокая причина :pardon:. MSDN подсказал, что аналог JScript null в мире COM это VT_NULL, т.е. значение, используемое, например, в базах данных для указания того, что вообще никакого значения нет. В .NET прямым аналогом является объект System.DBNull.Value. Очевидно, что [.NET null] != [.NET System.DBNull.Value].

Но проблему я все-таки решил, просто используя непроинициализированную переменную в JScript:
[JScript]
function Main()
{
  var dotNETNull;
  var testedObject = Sys.Process("WindowsApplication1").WinFormsObject("Form1", "Form1");
  Log.Message(testedObject.IsNull(dotNETNull));
}
А вот и код моего тестового метода в классе формы:
[C#]
public partial class Form1 : Form
{
	...
	public bool IsNull(object o)
	{
		return o == null;
	}
}
Все работает!
  • 1


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных