public override PropertyInfo[] GetProperties(BindingFlags bf)
{
if (!this.generic_type.IsCompilerContext)
{
throw new NotSupportedException();
}
ArrayList arrayList = new ArrayList();
Type type = this;
for (;;)
{
MonoGenericClass monoGenericClass = type as MonoGenericClass;
if (monoGenericClass != null)
{
arrayList.AddRange(monoGenericClass.GetPropertiesInternal(bf, this));
}
else
{
if (!(type is TypeBuilder))
{
break;
}
arrayList.AddRange(type.GetProperties(bf));
}
if ((bf & BindingFlags.DeclaredOnly) != BindingFlags.Default)
{
goto Block_4;
}
type = type.BaseType;
if (type == null)
{
goto IL_91;
}
}
MonoType monoType = (MonoType)type;
arrayList.AddRange(monoType.GetPropertiesByName(null, bf, false, this));
Block_4:
IL_91:
PropertyInfo[] array = new PropertyInfo[arrayList.Count];
arrayList.CopyTo(array);
return(array);
}