public static ClrType Create(ClrNamespace ns, Type type) { if (type.IsDelegate()) { return(new ClrDelegate(ns, type)); } if (type.IsClass) { return(new ClrClass(ns, type)); } if (type.IsInterface) { return(new ClrInterface(ns, type)); } if (type.IsEnum) { return(new ClrEnumeration(ns, type)); } if (type.IsValueType) { return(new ClrStructure(ns, type)); } throw new ArgumentException($"Unexpected type: {type}"); }
public ClrClass(ClrNamespace ns, Type typeInfo) : base(ns, typeInfo) { }
public ClrEnumeration(ClrNamespace ns, Type typeInfo) : base(ns, typeInfo) { }
public ClrDelegate(ClrNamespace ns, Type typeInfo) : base(ns, typeInfo) { }
public ClrInterface(ClrNamespace ns, Type typeInfo) : base(ns, typeInfo) { }
private ClrType(ClrNamespace ns, ClrType owner, Type typeInfo) : base(owner, typeInfo) { Namespace = ns ?? owner.Namespace; Members = CollectMembers(); }
protected ClrType(ClrNamespace ns, Type typeInfo) : this(ns, null, typeInfo) { }
public ClrStructure(ClrNamespace ns, Type typeInfo) : base(ns, typeInfo) { }