请看我下面的代码
public interface ICoach
{
void Test();
}
public class Player : IPlayer
{
void IPlayer.Run()
{
Console.WriteLine(this.Name + "Run");
}
void IPlayer.Jump()
{
Console.WriteLine(this.Name + ": Jump");
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public Player(string name)
{
Name = name;
}
}
public class Coach : ICoach
{
void ICoach.Test()
{
Console.WriteLine("Test");
}
}
public class SuperPlayer : ICoach, IPlayer
{
private int count = 0;
public void Test()
{
Console.WriteLine("Super player test");
count++;
}
public void Run()
{
Console.WriteLine("Super player run");
count++;
}
public void Jump()
{
Console.WriteLine("Super player jump");
count++;
}
public void PrintRunTimes()
{
Console.WriteLine(string.Format("Super player runs {0} times", count));
}
}
container.RegisterType<IPlayer, Player>();
container.RegisterType<ICoach, Coach>();
container.RegisterType<ICoach, SuperPlayer>("super", new ContainerControlledLifetimeManager());
container.RegisterType<IPlayer, SuperPlayer>("super", new ContainerControlledLifetimeManager());SuperPlayer类实现两个接口: IPlayer和ICoach;Player类实现IPlayer接口,Coach类实现ICoach interafce。
我可以使用超级参数解析SuperPlayer实例。但这是单身。如果我不这样注册,使用超级参数的IPlayer和ICoach解析将返回两个不同的实例。是否有一种方法来解析SuperPlayer实例,而不是单例实例?
发布于 2016-06-22 10:32:08
您可以创建一个新的ISuperPlayer接口,它结合了ICoach和IPlayer。然后根据需要实现、注册和解析该接口。
https://stackoverflow.com/questions/37965226
复制相似问题