C# 通过使用接口为类提供属性

C# 通过使用接口为类提供属性,c#,interface,C#,Interface,如果您有诸如Page、News等描述内容项的类,并且希望实现向这些类添加附件(文件或其他类型的项)的功能,您会创建一个 public List<Attachment> Attachments { get; set; } 这看起来还可以吗?如果您打算使用像 ProcessAttachments(IAttachmentContainer MyObject)... 然后您可以将实现附件接口的任何对象传递给它 ProcessAttachments(NewsObject); 是否会有类似

如果您有诸如Page、News等描述内容项的类,并且希望实现向这些类添加附件(文件或其他类型的项)的功能,您会创建一个

public List<Attachment> Attachments { get; set; }

这看起来还可以吗?

如果您打算使用像

ProcessAttachments(IAttachmentContainer MyObject)...
然后您可以将实现附件接口的任何对象传递给它

ProcessAttachments(NewsObject);

是否会有类似于不同附件/小部件的属性/方法?如果是这样,您可以定义一个接口
IContainer,其中T:BaseContainedClass
。尽管如此,你最终还是会得到一些非常相似的东西。相似,或者我应该说,在处理所有内容项(新闻、页面等)的附件时,将使用相同的属性/方法,但接口本身不会非常相似。例如,附件基本上是文件,它们的行为与小部件(小部件更多的是UI项)完全不同。但是,当新闻和页面都实现IAttachmentContainer时,我希望它们都以相同的方式处理附件——我指的是相同的DB持久性行为、业务规则、序列化处理等。接口只有属性而没有方法,这不应该真正困扰您。属性getter在概念上与不接受参数的方法没有太大区别。至于你的问题,如果没有更多关于附件和小部件需要执行何种操作的信息,很难说设计应该如何。是的,这就是我的想法和实现。
ProcessAttachments(IAttachmentContainer MyObject)...
ProcessAttachments(NewsObject);