LightInject - 派生接口导致多个实例
LightInject - Derived interfaces leads to multiple instances
在我的应用程序中,我处理了许多通过多个接口在 LightInject 容器中注册的 ViewModel。其中一些接口是出于单元测试目的从其他接口派生的。
当使用同一个接口解析多个 ViewModel 时,我得到的 ViewModel 实例比预期的要多。
我为这种行为做了一个简化的例子。是否有可能以某种方式防止这种行为?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public interface IBar
{
}
public interface IFoo : IBar
{
}
public class Cat : IFoo
{
}
class Program
{
static void Main(string[] args)
{
var container = new LightInject.ServiceContainer();
container.Register<IBar, Cat>();
container.Register<IFoo, Cat>();
var m = container.GetAllInstances(typeof(IBar));
// m will contain 2 Instances of Cat. Is it possible it will resolve only 1 Instance?
}
}
}
试试这个
var container = new ServiceContainer(new ContainerOptions() {EnableVariance = false});
在我的应用程序中,我处理了许多通过多个接口在 LightInject 容器中注册的 ViewModel。其中一些接口是出于单元测试目的从其他接口派生的。
当使用同一个接口解析多个 ViewModel 时,我得到的 ViewModel 实例比预期的要多。
我为这种行为做了一个简化的例子。是否有可能以某种方式防止这种行为?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public interface IBar
{
}
public interface IFoo : IBar
{
}
public class Cat : IFoo
{
}
class Program
{
static void Main(string[] args)
{
var container = new LightInject.ServiceContainer();
container.Register<IBar, Cat>();
container.Register<IFoo, Cat>();
var m = container.GetAllInstances(typeof(IBar));
// m will contain 2 Instances of Cat. Is it possible it will resolve only 1 Instance?
}
}
}
试试这个
var container = new ServiceContainer(new ContainerOptions() {EnableVariance = false});