Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    efams
    @efams

    Hi! I left the default routes:

    applicationBuilder.UseMvc(routes =>
    {
    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
    });
    and in ExtensionA created a class public class ExtensionA : IExtension

    and then

    public void RegisterRoutes(IRouteBuilder routeBuilder)
    {
    routeBuilder.MapRoute(name: "Extension A", template: "extension-a", defaults: new { controller = "ExtensionA", action = "Index" });
    }

    Артём Баранов
    @artemb89

    @efams
    add "this.configurationRoot = Configuration; " in startup constructor and in method ConfigureServices(IServiceCollection services) add base.ConfigureServices(services);

    http://clip2net.com/s/3vJ4xE0

    efams
    @efams
    Yess!! Now ExtensionA work, but SpiderController won't work, showing this:
    InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNet.Routing.IRouteBuilder' while attempting to activate 'SpiderJIT.Controllers.SpiderController'.
    I'm trying to resolve, i think i have to register a route for SpiderController
    Артём Баранов
    @artemb89
    Strangely enough, I have worked http://clip2net.com/s/3vJhbRU
    efams
    @efams
    Ok now it work like a charm, without changing anything :smile:
    Thank you so much! @artemb89
    Артём Баранов
    @artemb89
    You are welcome! :smile:
    efams
    @efams
    A little problem, now i clean cache and browser doesn't load external file like .js and .css. How can I solve that?
    If I delete/comment this line everything css and js works well but no extension was loaded
    // ExtCore Implementation - Startup (...)
    this.configurationRoot = Configuration;
    // ExtCore Implementation - ConfigureServices(...)
    base.ConfigureServices(services);
    Dmitry Sikorsky
    @DmitrySikorsky
    Are you using alpha7?
    Can you access your files with browser?
    efams
    @efams
    No, but now I update to alpha7 and it works well! :+1:
    Dmitry Sikorsky
    @DmitrySikorsky
    Happy to hear this :) Yes, it was bug there, I've fixed it!
    efams
    @efams
    Hi guys! Suppose i have many Extensions (ExtA, ExtB, ExtC ...).
    ExtA, ExtB and ExtC have for example a controller named "Search" that implement a method named "Start()"
    And then I have the MainApp that implement, like extensions, a controller named "Search" containing "Start()" method.
    Is possible to call from MainApp controller Search.Start() all Start() method from Extensions, elaborate the result and then return to the View?
    Suppose than all Extesions Search.Start() return the same type of data.
    I'm trying without success with:
    IEnumerable<System.Reflection.Assembly> outItem= ExtensionManager.Assemblies;
    object obj = Activator.CreateInstance(Type.GetType(........
    but nothing works :smile: i can't find a solution
    Dmitry Sikorsky
    @DmitrySikorsky
    Hi! It sounds a bit strange that you want to call Start method of controllers directly, maybe it would be better to have some special class for that. But doesn't matter. You can use https://github.com/ExtCore/ExtCore/blob/master/src/ExtCore.Infrastructure/ExtensionManager.cs to get all implementations or instances of some specific type and then run the method. As I remember I have done something like this when have to return JSON with the results of different requests with one request.
    efams
    @efams
    Yes, is better to implement function in other classes and not into the controller...
    Can you show me an example pleas? I'm trying to call in MainApp the method Start(string key) situated inside class Search in MainApp.ExtA.
    TRepository repository = ExtensionManager.GetInstance<TRepository>(a => a.FullName.ToLower().Contains("entityframework.sqlite"));
    you can use GetInstances instead of GetInstance
    a => a.FullName.ToLower().Contains("entityframework.sqlite") is just filter
    you can skip it
    Артём Баранов
    @artemb89
    Предлагаю в RepositoryBase реализовать методы CRUD операций, могу сегодня вечером этим заняться, если все согласны
    Пронин Андрей
    @KANekT
    там же что-то такое уже реализовывалось или это в платформусе было
    Артём Баранов
    @artemb89
    Вроде бы нет, в платформусе почти в каждом репозитории есть public Permission WithKey(int id)
    {
    return this.dbSet.FirstOrDefault(p => p.Id == id);
    }
    public IEnumerable<Permission> All()
    {
      return this.dbSet.OrderBy(p => p.Position);
    }
    и похожие куски
    Пронин Андрей
    @KANekT

    на прошлой работе было что репозитарий это только CRUD

    а все остальные запросы через services выполнялись

    Артём Баранов
    @artemb89
    Почти то же самое, в репозитории CRUD, всё остальное в Bl. Т.к. методы чтения,создания, редактирования, удаления в основном одинаковые, хотелось бы добавить виртуальные методы в RepositoryBase, чтобы исключить дублирование кода
    Пронин Андрей
    @KANekT
    да надо бы с возможностью overrride
    Dmitry Sikorsky
    @DmitrySikorsky
    я обычно слой сервисов не использую, т.к. чаще всего это просто копирование функционала из репозитория (вот тут это обсуждали в комментах, и в присланном примере как раз так и было: https://habrahabr.ru/company/microsoft/blog/279985/#comment_8820367). если необходимо выполнять какие-то сложные манипуляции (типа создания пользователя со многими задействованными таблицами и так далее), я использую некие менеджеры или хелперы. идея с CRUD вроде бы хорошая, хотя смущает, что все репозитории получат эти возможности, даже если они не нужны. также, если у сущности составной первичный ключ, то как быть? предлагаю этот момент сначала обсудить
    также там висит пул реквест, связанный с путем к каталогу с расширениями. мне кажется, надо вообще пересмотреть механизм формирования пути, т.к. для запаблишенного приложения получается вообще неправильный путь, т. к. там меняется структура проекта. наверное, нужно не от папки src путь писать, а от корня проекта. как считаете?
    Артём Баранов
    @artemb89
    По поводу пути к каталогу расширений согласен. По поводу CRUD, можно написать дополнительный класс, если функционал требуется - наследуем. По поводу составных ключей нужно подумать.
    Пронин Андрей
    @KANekT
    Microsoft.AspNet.Identity не стали использовать в проекте ?
    Dmitry Sikorsky
    @DmitrySikorsky
    SignOut смерджил
    Identity использовать не стал, мне эта штука не нравится. Там в таблице пользователей прописаны левые поля, вроде номера телефона, электронной почты и кучи прочего лишнего. + оно работает только с EF.
    тогда базовый класс для контекста необходимо было бы наследовать от их класса. короче, жестко весьма
    Пронин Андрей
    @KANekT

    KANekT/Platformus@6bdd089

    не везде поставлена альфа 7...

    Dmitry Sikorsky
    @DmitrySikorsky
    исправил
    Пронин Андрей
    @KANekT

    http://localhost:6067/wwwroot.areas.backend.css.platformus.barebone.min.css

    такие ссылки не работают :( на новом ext core

    Артём Баранов
    @artemb89

    нужно не от папки src путь писать, а от корня проекта. как считаете?
    По поводу пути к каталогу расширений согласен

    Сейчас посмотрел в код, может быть что-то я не понимаю, но там вроде бы итак applicationBasePath от которого обрезаем папку src в случае его наличия

    Dmitry Sikorsky
    @DmitrySikorsky
    Должно работать, я проверял.
    Возможно, при пересборке файла просто не было и он не попал в ресурсы
    Пронин Андрей
    @KANekT
    а когда пдатформус на nuget будет ?
    Dmitry Sikorsky
    @DmitrySikorsky
    Он там. Просто в поиске не показывается.
    Пронин Андрей
    @KANekT
    хм … надо проверить