Welcome

首页 / 软件开发 / .NET编程技术 / Unity Application Block 1.0系列(3):属性/设值方法注入(Property/Setter Inj

Unity Application Block 1.0系列(3):属性/设值方法注入(Property/Setter Inj2010-07-09 cnblogs inrie Inrie什么情况下使用Property (Setter) Injection

当实例化父对象时也能自动实例化所依赖的对象

通过简单的方式使得很容易做到在代码中查看每个类所依赖的项

父对象有很多相互之间有关联关系的构造器,导致在调试和维护时很不方便。

父对象包含有很多参数构造器,特别是参数类型相似的只能通过参数的位置来辨别的

让用户(将调用这些代码的程序)更方便的看到有哪些对象可以用,这在Constructor Injection里是没办法实现的。

通过修改依赖对象的代码来控制哪些对象可以被注入,而不用改动父对象或应用程序

准备工作

//歌曲类
public class Song
{
//歌手
public string Singer
{
get
{
return "Westlife";
}
}

//歌曲名
public string Name
{
get
{
return "My Love";
}
}
}

public abstract class Player
{
[Dependency]
public Song Song { get; set; }

public abstract string Name { get; }

public void Play()
{
Console.WriteLine(string.Format("{0}: Now Playing [{1}] Singing by ({2})", this.Name, this.Song.Name, this.Song.Singer));
}
}

public class Mp3Player : Player
{
public override string Name
{
get
{
return "Mp3 Player";
}
}
}

public class CDPlayer : Player
{
public override string Name
{
get
{
return "CD Player";
}
}
}