小编use*_*255的帖子

c# - 如何使用接口和/或抽象类正确地执行MULTIPLE"mixins"

我希望能够定义一些对象并将一些"行为"附加到该对象,其中实现不在对象中.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)

c# abstract-class interface c#-3.0

5
推荐指数
1
解决办法
353
查看次数

标签 统计

abstract-class ×1

c# ×1

c#-3.0 ×1

interface ×1