С помощью простого инжектора есть способ установить свойство или иметь параметр конструктора, который не является интерфейсом?
Мое приложение представляет собой UWP WebVew, и большинство служб зависят от него и его состояния.
Я создал обертку для нее, чтобы я мог внедрить ее во все сервисы следующим образом:
public interface IWebBrowser
{
WebView WebView { get; set; }
}
public class WebBrowser : IWebBrowser
{
public WebView WebView { get; set; }
}
public sealed partial class MainPage : Page
{
public MainPage()
{
InitializeComponent();
var Container = new Container();
Container.Register<IWebBrowser, WebBrowser>(Lifestyle.Singleton);
Container.Register<MainViewModel>();
var web = Container.GetInstance<IWebBrowser>();
web.WebView = WebView;
Vm = Container.GetInstance<MainViewModel>();
}
}
public class MainViewModel : ViewModelBase
{
private readonly web;
public MainViewModel(IWebBrowser web)
{
this.web = web;
}
}
Это работает, но выглядит подверженным ошибкам. Есть ли способ сделать это без этих двух строк:
var web = Container.GetInstance<IWebBrowser>();
web.WebView = WebView;