Сделать проверку переменной со значением Nothing

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Сделать проверку переменной со значением Nothing

Сообщение TrueTrue » 24.09.2013 (Вт) 19:46

Вобщем ситуация следующая, работаю с базой CRM, получаю оттуда много переменных Microsoft.Xrm.Sdk.OptionSetValue, в функцию через переменную: Value

Проблема вот в чём.
Переменная Value может быть как заполненной, так и со значением Nothing, тоесть совершенно пустой.

Мне необходимо сделать проверку, на то равна ли она Nothing или имеет структуру OptionSetValue
Если я в начале ставлю проверку на Nothing, то когда переменная имеет структуру OptionSetValue, вылетает ошибка!
И на оборот, если я делаю проверку на OptionSetValue прежде проверки на Nothing, также вылетает ошибка!

Как можно сделать проверку, без использования Try Catch? Подскажите пожалуйста.
Код: Выделить всё
Function ( Value as Object) as String
                If Value = Nothing Then
                    RevToString = "0"
                Else
                    RevToString = Value.value.ToString
                End If

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Сделать проверку переменной со значением Nothing

Сообщение FireFenix » 24.09.2013 (Вт) 20:08

Если я в начале ставлю проверку на Nothing

Код: Выделить всё
If Value = Nothing Then

Вообще проверка вот это:
Код: Выделить всё
If Value Is Nothing Then


TrueTrue писал(а):то когда переменная имеет структуру OptionSetValue

Если переменная таки структура, то она не может быть Nothing, ибо структуры передаются по значению

Постройте нормальную логику. Юзать Object и всякие другие обёртки - расово не правильно
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Сделать проверку переменной со значением Nothing

Сообщение TrueTrue » 24.09.2013 (Вт) 20:52

В том то и весь прикол, что SetOptionValue в CRM имеет примерно такую структуру: смотри во вложении.

А когда из CRM приходит пустое значение, то вся структура отсутствует, а переменная имеет просто значение Nothing
Вложения
OptionSetValue.jpg
Пример структуры OptionSetValue в памяти
OptionSetValue.jpg (214.84 Кб) Просмотров: 2564

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Сделать проверку переменной со значением Nothing

Сообщение FireFenix » 24.09.2013 (Вт) 22:29

Судя по логу, таки New_status, который OptStatusValue - есть, а в ней вложенное что-то с членом Members, который есть производное от IList, которого нет.

Выложите нормальный код и список сторонних библиотек, если в этой дилемме участвуют
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Сделать проверку переменной со значением Nothing

Сообщение TrueTrue » 24.09.2013 (Вт) 22:41

К сожалению, кода там немеряно. :) В добавок он разбит на кучу классов.... мне тогда весь исходник выкладывать придётся. Немного поколдовал, и пристроил ваш Is Nothing, вроде всё заработало, большое спасибо!!! :)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 25.09.2013 (Ср) 11:53

FireFenix писал(а):Если переменная таки структура, то она не может быть Nothing, ибо структуры передаются по значению

80%, что там на самом деле класс :D
К тому же, аргумент передаётся As Object, значит Nothing там может быть в любом случае...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList