public void Register( ITypeRegistrar typeRegistrar, IEnumerable <ITypeReference> typeReferences) { foreach (ClrTypeReference typeReference in typeReferences.OfType <ClrTypeReference>()) { if (!BaseTypes.IsNonGenericBaseType(typeReference.Type) && _typeInspector.TryCreate(typeReference.Type, out TypeInfo typeInfo)) { Type type = typeInfo.ClrType; if (IsTypeSystemObject(type)) { ClrTypeReference namedTypeReference = typeReference.With(type); if (!typeRegistrar.IsResolved(namedTypeReference)) { typeRegistrar.Register( typeRegistrar.CreateInstance(type), typeReference.Scope, BaseTypes.IsGenericBaseType(type)); } } else { TryMapToExistingRegistration( typeRegistrar, typeInfo, typeReference.Context, typeReference.Scope); } } } }
public void Register( ITypeRegistrar typeRegistrar, IEnumerable <ITypeReference> typeReferences) { foreach (ExtendedTypeReference typeReference in typeReferences.OfType <ExtendedTypeReference>()) { if (_typeInspector.TryCreateTypeInfo(typeReference.Type, out ITypeInfo? typeInfo) && !ExtendedType.Tools.IsNonGenericBaseType(typeInfo.NamedType)) { Type namedType = typeInfo.NamedType; if (IsTypeSystemObject(namedType)) { IExtendedType extendedType = _typeInspector.GetType(namedType); ExtendedTypeReference namedTypeReference = typeReference.With(extendedType); if (!typeRegistrar.IsResolved(namedTypeReference)) { typeRegistrar.Register( typeRegistrar.CreateInstance(namedType), typeReference.Scope, ExtendedType.Tools.IsGenericBaseType(namedType)); } } else { TryMapToExistingRegistration( typeRegistrar, typeInfo, typeReference.Context, typeReference.Scope); } } } }
public void Register( ITypeRegistrar typeRegistrar, IEnumerable <ITypeReference> typeReferences) { foreach (ISyntaxTypeReference typeReference in typeReferences.OfType <ISyntaxTypeReference>()) { if (Scalars.TryGetScalar( typeReference.Type.NamedType().Name.Value, out IClrTypeReference namedTypeReference)) { if (!typeRegistrar.IsResolved(namedTypeReference)) { typeRegistrar.Register(typeRegistrar.CreateInstance(namedTypeReference.Type)); } } } }
public void Register( ITypeRegistrar typeRegistrar, IEnumerable <ITypeReference> typeReferences) { foreach (SyntaxTypeReference typeReference in typeReferences.OfType <SyntaxTypeReference>()) { if (Scalars.TryGetScalar( typeReference.Type.NamedType().Name.Value, out Type? scalarType)) { ExtendedTypeReference namedTypeReference = _typeInspector.GetTypeRef(scalarType); if (!typeRegistrar.IsResolved(namedTypeReference)) { typeRegistrar.Register( typeRegistrar.CreateInstance(namedTypeReference.Type.Type), typeReference.Scope); } } } }
public void Handle(ITypeRegistrar typeRegistrar, ITypeReference typeReference) { var typeRef = (ExtendedTypeReference)typeReference; if (_typeInspector.TryCreateTypeInfo(typeRef.Type, out ITypeInfo? typeInfo) && !ExtendedType.Tools.IsNonGenericBaseType(typeInfo.NamedType)) { if (typeInfo.NamedType == typeof(IExecutable)) { throw ThrowHelper.NonGenericExecutableNotAllowed(); } Type namedType = typeInfo.NamedType; if (IsTypeSystemObject(namedType)) { IExtendedType extendedType = _typeInspector.GetType(namedType); ExtendedTypeReference namedTypeReference = typeRef.With(extendedType); if (!typeRegistrar.IsResolved(namedTypeReference)) { typeRegistrar.Register( typeRegistrar.CreateInstance(namedType), typeReference.Scope, ExtendedType.Tools.IsGenericBaseType(namedType)); } } else { TryMapToExistingRegistration( typeRegistrar, typeInfo, typeReference.Context, typeReference.Scope); } } }