代码之家  ›  专栏  ›  技术社区  ›  Rob Packwood

C#动态字典

  •  0
  • Rob Packwood  · 技术社区  · 16 年前

    Mock<IFoo>

    Key = IFoo (basically a type)
    
    Value = new SomeCustomType< T >
    {
      T ConcreteObject
      Mock< T > MockObject
    }
    

    我可能无法恰当地表达我的问题,但我需要一些帮助!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Mauricio Scheffer    16 年前

    如果您不需要具体的对象,可以使用 automocking container

    Here's an Autofac automocking container for Moq .

        2
  •  1
  •   kvb    16 年前

    我不是百分之百确定我理解这个问题,但这是我的看法。如果需要按类型键入实例字典,最简单的方法是使用静态泛型类而不是实际字典:

    public static class Dict<T> {
        public static T Instance { get; set; }
    }
    

    然后,设置与类型关联的实例 IFoo Dict<IFoo>.Instance = myIFooInstance; ,要将其返回,只需存储 Dict<IFoo>.Instance .

    如果相反,你想出去 Mock 按类型设置键控的实例,可以执行非常类似的操作:

    public static class MockDict<T> {
        public static Mock<T> Instance { get; set; }
    }
    

    Mock<IFoo> myMock = ...
    MockDict<IFoo>.Instance = myMock;
    ...
    Mock<IFoo> myMock2 = MockDict<IFoo>.Instance;