2 using System.Collections.Generic;
16 if ( t == expected )
return true;
18 }
while ( t != null && t != typeof(
object ) );
36 var runtimeType = type.GetType();
37 if ( type == runtimeType )
39 return typeof( Type ).AssemblyQualifiedName;
42 StringBuilder sb =
new StringBuilder( type.AssemblyQualifiedName );
43 if ( !type.ContainsGenericParameters )
return sb.ToString();
46 Type[] genargs = type.GetGenericArguments();
48 for (
int i = 0; i < genargs.Length; i++ )
54 sb[sb.Length - 1] =
'>';
58 public static Type
Parse(
string typeStr )
60 int genOpen = typeStr.IndexOf(
'<' );
61 int genClose = typeStr.IndexOf(
'>' );
63 if ( genOpen < 0 && genClose < 0 )
return Type.GetType( typeStr );
64 if ( genOpen >= 0 && genClose < 0 )
throw new ArgumentException(
"Unterminated < in type string: " + typeStr );
65 if ( genOpen < 0 && genClose >= 0 )
throw new ArgumentException(
"Unexpected > in type string: " + typeStr );
67 Type parsedType = Type.GetType( typeStr.Substring( 0, genOpen ) );
68 string[] genargStrings = typeStr.Substring( genOpen + 1, genClose - genOpen - 1 ).Split(
',' );
69 Type[] genargs =
new Type[genargStrings.Length];
71 for (
int i = 0; i < genargStrings.Length; i++ )
static bool InheritsFrom(Type actual, Type expected)
static string ToString(Type type)
static Type Parse(string typeStr)