private ITypeDefinitionProvider GetProvider(object value)
        {
            if (value is ITypeDefinitionProvider typeDefinitionProvider)
            {
                return(typeDefinitionProvider);
            }

            if (value.GetType().IsGenericType&& value.GetType().GetInterfaces().Where(x => x.IsGenericType).Select(x => x.GetGenericTypeDefinition()).Contains(typeof(ITypeDefinitionConstructor <>)))
            {
                value = ((dynamic)value).Construct();
            }

            if (value is ITypeDefinition typeDefinition)
            {
                IManualTypeDefinitionProvider manager = _factory.GetImplementation <IManualTypeDefinitionProvider>();
                manager.RegisterTypeDefinition(typeDefinition);
                return(manager);
            }

            if (value is Type type)
            {
                IRigidTypeDefinitionManager manager = _factory.GetImplementation <IRigidTypeDefinitionManager>();
                manager.SetType(type);
                return(manager);
            }

            IRigidTypeDefinitionManager rigidTypeDefinitionManager = _factory.GetImplementation <IRigidTypeDefinitionManager>();

            rigidTypeDefinitionManager.SetTypeDefinition(value, null, null);
            return(rigidTypeDefinitionManager);
        }
Beispiel #2
0
        private ITypeDefinitionProvider GetProvider(object value)
        {
            if (value is ITypeDefinitionProvider typeDefinitionProvider)
            {
                return(typeDefinitionProvider);
            }

            if (value is ITypeDefinition typeDefinition)
            {
                IManualTypeDefinitionProvider manager = _factory.GetImplementation <IManualTypeDefinitionProvider>();
                manager.RegisterTypeDefinition(typeDefinition);
                return(manager);
            }

            if (value is Type type)
            {
                IRigidTypeDefinitionManager manager = _factory.GetImplementation <IRigidTypeDefinitionManager>();
                manager.RegisterTypeDefinition(_instance.GetTypeInfo(type).DefaultValue, null, null);
                return(manager);
            }

            IRigidTypeDefinitionManager rigidTypeDefinitionManager = _factory.GetImplementation <IRigidTypeDefinitionManager>();

            rigidTypeDefinitionManager.RegisterTypeDefinition(value, null, null);
            return(rigidTypeDefinitionManager);
        }
 public static IManualTypeDefinitionProvider WithAcceptedDefinition <TValue>(this IManualTypeDefinitionProvider manualTypeDefinitionManager, ITypeDefinitionConstructor <TValue> typeDefinitionConstructor)
 => manualTypeDefinitionManager.WithAcceptedDefinition(typeDefinitionConstructor.Construct());
 public static IManualTypeDefinitionProvider WithAcceptedDefinition <T>(this IManualTypeDefinitionProvider manualTypeDefinitionManager, T defaultValue, string editorName = null, string displayName = null)
 => manualTypeDefinitionManager.WithAcceptedDefinition(Constructor.TypeDefinition(defaultValue, editorName, displayName));
 public static IManualTypeDefinitionProvider WithAcceptedDefinition(this IManualTypeDefinitionProvider manualTypeDefinitionManager, ITypeDefinition typeDefinition)
 {
     manualTypeDefinitionManager.RegisterTypeDefinition(typeDefinition);
     return(manualTypeDefinitionManager);
 }