Пожалуйста, помогите на VB.NET эквивалент этого из C#
Пожалуйста, помогите мне преобразовать этот кусок кода в C# в VB.NET
protected override object SetVal(ConventionInfo c)
{
if (c.SourceProp.Type.IsValueType || c.SourceProp.Type == typeof(string)
|| c.TargetProp.Type.IsValueType || c.TargetProp.Type == typeof(string))
return c.SourceProp.Value;
//handle arrays
if (c.SourceProp.Type.IsArray)
{
var arr = c.SourceProp.Value as Array;
if (arr != null)
{
var clone = Activator.CreateInstance(c.TargetProp.Type, arr.Length) as Array;
for (int index = 0; index < arr.Length; index++)
{
var a = arr.GetValue(index);
if (a.GetType().IsValueType || a is string) continue;
if (clone != null)
clone.SetValue(Activator.CreateInstance(c.TargetProp.Type.GetElementType()).InjectFrom<CloneInjection>(a), index);
}
return clone;
}
}
//for simple object types create a new instace and apply the clone injection on it
return Activator.CreateInstance(c.TargetProp.Type)
.InjectFrom<CloneInjection>(c.SourceProp.Value);
}
1 ответ
Решение
С помощью этого собеседника http://converter.telerik.com/ вы можете сделать это самостоятельно
Protected Overrides Function SetVal(c As ConventionInfo) As Object
If c.SourceProp.Type.IsValueType OrElse c.SourceProp.Type = GetType(String) OrElse c.TargetProp.Type.IsValueType OrElse c.TargetProp.Type = GetType(String) Then
Return c.SourceProp.Value
End If
If c.SourceProp.Type.IsArray Then
Dim arr = TryCast(c.SourceProp.Value, Array)
If arr IsNot Nothing Then
Dim clone = TryCast(Activator.CreateInstance(c.TargetProp.Type, arr.Length), Array)
For index As Integer = 0 To arr.Length - 1
Dim a = arr.GetValue(index)
If a.[GetType]().IsValueType OrElse TypeOf a Is String Then
Continue For
End If
If clone IsNot Nothing Then
clone.SetValue(Activator.CreateInstance(c.TargetProp.Type.GetElementType()).InjectFrom(Of CloneInjection)(a), index)
End If
Next
Return clone
End If
End If
Return Activator.CreateInstance(c.TargetProp.Type).InjectFrom(Of CloneInjection)(c.SourceProp.Value)
End Function