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); }
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); }