Как узнать (.NET 2) общий класс?
Class A(Of T)
End Class
' not work '
If TypeOf myObject Is A Then
?
Как узнать (.NET 2) общий класс?
Class A(Of T)
End Class
' not work '
If TypeOf myObject Is A Then
?
Если С# будет выглядеть так:
public class A<T>
{
}
A<int> a = new A<int>();
if (a.GetType().IsGenericType && 
    a.GetType().GetGenericTypeDefinition() == typeof(A<>))
{
}
ОБНОВЛЕНО
Похоже, это то, что вам действительно нужно:
public static bool IsSubclassOf(Type childType, Type parentType)
{
    bool isParentGeneric = parentType.IsGenericType;
    return IsSubclassOf(childType, parentType, isParentGeneric);
}
private static bool IsSubclassOf(Type childType, Type parentType, bool isParentGeneric)
{
    if (childType == null)
    {
        return false;
    }
    childType = isParentGeneric && childType.IsGenericType ? childType.GetGenericTypeDefinition() : childType;
    if (childType == parentType)
    {
        return true;
    }
    return IsSubclassOf(childType.BaseType, parentType, isParentGeneric);
}
И может использоваться следующим образом:
public class A<T>
{
}
public class B : A<int>
{
}
B b = new B();
bool isSubclass = IsSubclassOf(b.GetType(), typeof (A<>)); // returns true;
		  Public Function IsSubclassOf(ByVal childType As Type, ByVal parentType As Type) As Boolean
    Dim isParentGeneric As Boolean = parentType.IsGenericType
    Return IsSubclassOf(childType, parentType, isParentGeneric)
  End Function
  Private Function IsSubclassOf(ByVal childType As Type, ByVal parentType As Type, ByVal isParentGeneric As Boolean) As Boolean
    If childType Is Nothing Then
      Return False
    End If
    If isParentGeneric AndAlso childType.IsGenericType Then
      childType = childType.GetGenericTypeDefinition()
    End If
    If childType Is parentType Then
      Return True
    End If
    Return IsSubclassOf(childType.BaseType, parentType, isParentGeneric)
  End Function