Я пытаюсь создать механизм передачи, где я могу взять объект класса и преобразовать его в объект webservice с минимальным количеством кода.Перенести объект 1 типа на объект другого типа
У меня был довольно хороший успех в этом подходе, но мне нужно уточнить техник, когда у меня есть пользовательские классы, возвращаемые в качестве свойств моего исходного объекта.
Private Sub Transfer(ByVal src As Object, ByVal dst As Object)
Dim theSourceProperties() As Reflection.PropertyInfo
theSourceProperties = src.GetType.GetProperties(Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance)
For Each s As Reflection.PropertyInfo In theSourceProperties
If s.CanRead AndAlso (Not s.PropertyType.IsGenericType) Then
Dim d As Reflection.PropertyInfo
d = dst.GetType.GetProperty(s.Name, Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance)
If d IsNot Nothing AndAlso d.CanWrite Then
d.SetValue(dst, s.GetValue(src, Nothing), Nothing)
End If
End If
Next
End Sub
Что мне нужно то, что некоторые определения, если источник собственность является основным типом (строки, int16, int32 и т.д., а не комплексного типа).
Я смотрел на s.PropertyType.Attributes и проверял маски на этом, но я не могу найти ничего, что указывает, что это базовый тип.
Есть ли что-то, что я могу проверить, чтобы узнать это?
Type.IsPrimitiveImpl Метод При переопределении в производном классе, реализует IsPrimitive свойства и определяет, является ли один из примитивных типов Типа. http://msdn.microsoft.com/en-us/library/system.type.isprimitiveimpl%28VS.71%29.aspx – abmv