Giter Site home page Giter Site logo

Comments (5)

schnerring avatar schnerring commented on April 27, 2024

I like that change, it indeed confused me initially.

Would it also be possible to rename the IViewModel interface? IMO the interface should denote that the implementing view model participates in routing. In @kentcb's original implementation he deliberately distinguished between IModalViewModel and IPageViewModel which is more readable IMO. A unified interface also is fine, as long as there is more distinction. Here some ideas:

  • ISextantViewModel
  • IViewStackViewModel
  • IRoutableViewModel, taken by ReactiveUI
  • IRoutingViewModel, maybe too easy to confuse with IRoutableViewModel?

Additionally, I don't see a reason for the new() constraint on RegisterViewModel<>() method.

ReactiveUI recommends the following pattern for dependency resolution which allows for good unit testing:

public HomeViewModel(AuthenticationService authenticationService = null)
{
    _authenticationService = authenticationService ?? Locator.Current.GetService<AuthenticationService>();
}

The pattern violates the new() constraint on RegisterViewModel<>(), though.

from sextant.

rms81 avatar rms81 commented on April 27, 2024

Is it ok if I start looking into this one?

from sextant.

RLittlesII avatar RLittlesII commented on April 27, 2024

@schnerring You are correct on several counts. The original did have two interfaces. When we ported it we didn't want a marker interface to be required if your plan was to display a page modally or not.

For the v3 API I have been considering ISextantViewModel for the base extension point.

That is a good point. The new() constraint was probably an oversight. It's intention was to force a segragation and could easily be reworked.

There will most likely need to be some form of a RegisterForNavigation<TView>(Func<TViewModel>) as folks who prefer to locate their ViewModels themselves will have to provide a delegate for registration.

from sextant.

RLittlesII avatar RLittlesII commented on April 27, 2024

@rms81 Yes. This is a good first time story. If you want to get started on it, feel free. If you need help reach out.

from sextant.

github-actions avatar github-actions commented on April 27, 2024

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

from sextant.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.