private async Task <TypeWithInterfaceModel> GetOrAddDefaultInterfaceFromComputed(string typeDisplayFullName) { var type = SearchTypeFromCache(typeDisplayFullName); if (type == null) { return(null); } if (ComputedInterfaces.ContainsKey(type)) { return(new TypeWithInterfaceModel { Type = type, InterfaceModel = ComputedInterfaces[type] }); } var builder = new GenericUserInterfaceModelBuilder(type, Options); var interfaceModel = builder.Result; var overriding = GetDefaultOverriding(type); if (overriding != null) { await overriding.MainOverrideFunction(this, interfaceModel); await ProcessClassesAndArrays(interfaceModel); ComputedInterfaces.TryAdd(type, interfaceModel); } await ProcessClassesAndArrays(interfaceModel); return(new TypeWithInterfaceModel { Type = type, InterfaceModel = interfaceModel }); }
/// <summary> /// Получить конфигуратор для блока, который является колекцией /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TItem"></typeparam> /// <param name="builder"></param> /// <param name="expression"></param> /// <returns></returns> public static GenericUserInterfaceBlockBuilderForCollectionType <TItem> GetBlockBuilderForCollection <TModel, TItem>(this GenericUserInterfaceModelBuilder <TModel> builder, Expression <Func <TModel, List <TItem> > > expression) where TModel : class { CheckCollectionItem <TItem>(); return(new GenericUserInterfaceBlockBuilderForCollectionType <TItem>(builder, builder.TypeDescriptionBuilder, builder.GetBlockByExpression(expression))); }
/// <summary> /// Получить конфигуратор для блока /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TProp"></typeparam> /// <param name="builder"></param> /// <param name="expression"></param> /// <returns></returns> public static GenericUserInterfaceBlockBuilder <TProp> GetBlockBuilder <TModel, TProp>(this GenericUserInterfaceModelBuilder <TModel> builder, Expression <Func <TModel, TProp> > expression) where TModel : class { return(new GenericUserInterfaceBlockBuilder <TProp>(builder, builder.TypeDescriptionBuilder, builder.GetBlockByExpression(expression))); }