2013-03-24 2 views
0

Есть ли лучший способ использовать сервис в mvvmcross путем инъекции конструктора? Например, у меня есть объект в реализации плагинаИнъекция конструктора для доступа к службе

public class MyObject : IMyObject 
{ 
    public MyObject (int id) 
    { 
     _id = id; 
    } 
} 

и хотят потреблять его где-то портативное ядро ​​(в Промишленое слое), как это:

public void ConsumeTheService() 
{ 
    int i = 50; 
    var myObject = this.GetService<IMyObject>(i); 
} 

На самом деле, я только использовать setter, чтобы вернуть мой идентификатор в реализацию.

ответ

0

После обновления вашего ... если вы спрашиваете о том, как получить:

var myObject = this.GetService<IMyObject>(50); 

и для этого, чтобы вернуть объект, который initiaised в new MyObject(50)

, то я бы вместо этого рекомендуется реализовать интерфейс

public interface IMyObjectFactory 
{ 
    IMyObject CreateMyObject(int i); 
} 

с реализацией:

public class MyObjectFactory : IMyObjectFactory 
{ 
    public IMyObject CreateMyObject(int i) 
    { 
     return new MyObject(i); 
    } 
} 

вы можете зарегистрировать этот IMyObjectFactory с IoC

+0

Точно, это способ, которым я был. Но может быть, будет целесообразно построить восстановленную службу с вводом параметров в конструктор. Я думаю, что так вы и делали для конструкции viewmodel. – tourili

+0

Да, вы можете, конечно, написать все, что хотите :) И есть открытый исходный код в Mvx, вы можете использовать Ms-PL :) – Stuart

0

Я не уверен, что я понимаю ваш пример - не уверен, что intValue делает в GetService

Независимо:

+0

Извините за не яснее, чем (I обновил мой пост). В vnext, который я использую, есть инъекция конструктора (строка только сейчас, я думаю) при использовании navigaterequest в mvx modelview. То, что я хочу, - это инъекция конструктора у потребителя услуг, поскольку я использую это для плагина. – tourili

Смежные вопросы