我希望能够定义一些对象并将一些"行为"附加到该对象,其中实现不在对象中.Rails-like:acts_as_taggable.作为一个具体的例子,我想说任务可以标记.我不想在任务中编写任何代码,除了通过......界面"启用"行为之外?这就是我的问题.您不能将实现放在接口中.我不想用所有可能的实现污染我的BaseObject [abstract?]类.
对象:任务,注意
行为:Taggable,Emailable,Printable,Deferrable(
任务可以被标记,通过电子邮件发送,打印和推迟.注释可以被标记,通过电子邮件发送,打印,但不能延期.
baseobject
public class BaseObject
{
Guid ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
tag.cs
public class Tag : BaseObject
{
public Guid Id { get; set; }
public String Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
itaggable.cs
public interface ITaggable
{
void AddTag(Tag tag);
... other Tag methods ...
}
Run Code Online (Sandbox Code Playgroud)
task.cs
public class Task : BaseObject, ITaggable, IEmailable, IPrintable
{
Task specified functionality... nothing about "taggging"
}
Run Code Online (Sandbox Code Playgroud)
note.cs
...
TagCollection.cs
public class TagCollection …Run Code Online (Sandbox Code Playgroud)