В середине большого проекта, который использует взаимодействие COM при миграции с VB6 на .NET, я обнаружил необходимость написать код, который получает объект от метода взаимодействия, а затем передать этот объект в форму взаимодействия, когда объектне является нулевым.
Я обнаружил на MSDN , что нулевые объекты возвращаются как пустой вариант.Это вызывает проблему с кодом VB6, подобным этому, где validator является классом взаимодействия, а inputKey не имеет отношения к проблеме.
Set validationObject = validator.GetValidationList(inputKey)
Оператор Set нельзя использовать, когда вариант имеет значение Empty.Вот пример того, что делала функция.
Dim validationList = GetValidationList(inputKey)
If validationList IsNot Nothing AndAlso validationList.Count > 0 Then
Return validationList
Else
Return Nothing
End If
Есть ли лучший способ получения значения Null, возвращаемого в COM как вариант VT_OBJECT?Является ли следующий код хорошей идеей?Кажется, это работает, но это ли «правильный» способ сделать это?
Dim validationList = GetValidationList(inputKey)
If validationList IsNot Nothing AndAlso validationList.Count > 0 Then
Return validationList
Else
Return New System.Runtime.InteropServices.UnknownWrapper(Nothing)
End If