Mono.CSharp.MetadataImporter.ImportTypeParameterTypeConstraints C# (CSharp) Method

ImportTypeParameterTypeConstraints() private method

private ImportTypeParameterTypeConstraints ( Mono.CSharp.TypeParameterSpec spec, Type type ) : void
spec Mono.CSharp.TypeParameterSpec
type IKVM.Reflection.Type
return void
        void ImportTypeParameterTypeConstraints(TypeParameterSpec spec, MetaType type)
        {
            var constraints = type.GetGenericParameterConstraints ();
            List<TypeSpec> tparams = null;
            foreach (var ct in constraints) {
                if (ct.IsGenericParameter) {
                    if (tparams == null)
                        tparams = new List<TypeSpec> ();

                    tparams.Add (CreateType (ct));
                    continue;
                }

                if (!IsMissingType (ct) && ct.IsClass) {
                    spec.BaseType = CreateType (ct);
                    continue;
                }

                spec.AddInterface (CreateType (ct));
            }

            if (spec.BaseType == null)
                spec.BaseType = TypeManager.object_type;

            if (tparams != null)
                spec.TypeArguments = tparams.ToArray ();
        }