0

コンストラクタインジェクションによってmvvmcrossでサービスを利用するためのより良い方法はありますか?たとえば、プラグインの実装にオブジェクトがあります

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

そして、このようなポータブルコア(ビジネスレイヤー内)のどこかでそれを消費したい:

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

実際、私はセッターを使用して、実装でIDを取得するだけです。

4

2 に答える 2

0

私はあなたの例を理解しているかどうかわかりません-何intValueが起こっているのかわかりませんGetService

関係なく:

  • MvvmCrossv3にはコンストラクタインジェクションが含まれています-http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.htmlで詳細を参照してください

  • 他の人もvNext内にコンストラクターインジェクションを実装しています-例:https ://github.com/gshackles/CrossBar/およびhttp://slodge.blogspot.co.uk/2013/02/a-second-take-on-constructor-injection .html

  • MvvmCross内のIoCは完全に交換可能です。したがって、必要に応じて他のIoCメカニズムを使用できます(ただし、これにはコードが必要です)。

于 2013-03-24T15:42:45.470 に答える
0

更新に続いて...取得方法について質問している場合:

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

これにより、次のように開始されたオブジェクトが返されます。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に登録できます

于 2013-03-24T17:19:34.727 に答える