我有这段代码(要复制的示例):
public class ObjectBase<T>
{
}
public abstract class ExportBase
{
public void ExportData<T>(string path, T data, string filename)
where T : ObjectBase<T>
{
// Several verifications on data.
// Example:
if (data != null)
{
this.InnerExport(this.GetFileName<T>(path, filename), data);
}
}
protected abstract void InnerExport<T>(string path, T data)
where T : ObjectBase<T>;
public string GetFileName<T>(string path, string filename)
{
// Code.
return "TEST";
}
}
internal sealed class XmlExport : ExportBase
{
protected override void InnerExport<T>(string path, T data)
{
// Code.
}
}
我不希望 XmlExport 可见(在我的类库中)也不继承(密封)。
使用 FxCop 10.0,我有一个CA1047:DoNotDeclareProtectedMembersInSealedTypes
:
名称: (FxCopCmd)
不要在密封类型中声明受保护的成员。说明: (FxCopCmd)
密封类型无法扩展,受保护成员仅在您可以扩展声明类型时才有用。密封类型不应声明受保护的成员。如何修复: (FxCopCmd)
将成员 'XmlExport.InnerExport(string, T)' 设为私有、公共或内部(Visual Basic 中的朋友)。信息:(FxCop)
密封类型无法扩展,受保护成员仅在您可以扩展声明类型时才有用。密封类型不应声明受保护的成员。
但我不能将保护更改为私有:虚拟或抽象成员不能是私有的。也不公开(在这里没有意义)。
我知道我可以使用 a SuppressMessage
,但我想知道是否有更好的方法(包括修改类)。
谢谢。