我有一个抽象类,它强制实现一个方法,该方法将接口作为输入,如下所示:
public abstract DocumentWriter
{
(...)
protected abstract void FillContent(IDocumentArgs args);
}
IDocumentArgs创建接口是为了确保某些属性包含在参数中,否则在很大程度上取决于DocumentWriter.
public interface IDocumentArgs
{
string Title { get; set; }
string Subject { get; set; }
string Author { get; set; }
}
基于这个接口,我对这个接口做了一个实现,就是要在DocumentWriter. 它看起来像这样:
public class ActualDocumentArgs : IDocumentArgs
{
// Properties enforced by the interface
string Title { get; set; }
string Subject { get; set; }
string Author { get; set; }
// Custom properties
string CustomerName { get; set; }
DateTime DueDate { get; set; }
(...)
}
该问题是:我想要实现FillContent()使用ActualDocumentArgs(我想应该是可能的,因为它实现了IDocumentArgs),就像这样:
public class ActualDocumentWriter : DocumentWriter
{
(...)
protected override void FillContent(ActualDocumentArgs args)
{
// Do stuff
}
}
但是如果我这样做,我会收到一个编译时错误:
'ActualDocumentWriter.FillContent(ActualDocumentArgs)':找不到合适的方法来覆盖。
另一方面,我不能IDocumentArgs用作输入,因为那时我将无法访问自定义属性。
如何解决这个问题?这让我很头疼...
POPMUISE
汪汪一只猫
PIPIONE
相关分类