我有這樣的代碼(樣品重現):FxCop的CA1047 - 抽象和無障礙水平
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(字符串,T)的私人,公共 或內部(在Visual Basic朋友)。信息:(的FxCop)
密封類型不能擴展,和受保護成員 只有有用的,如果你可以擴展聲明類型。 密封類型不應聲明受保護的成員。
但我不能將保護更改爲私有:虛擬或抽象成員不能是私有的。 也不公開(在這裏沒有意義)。
我知道我可以使用SuppressMessage
,但我想知道是否有更好的方法(包括修改類)。
謝謝。
同意。如果您報告連接時出現問題,請發佈鏈接,我會將其投票。 – RobSiklos
好吧,沒料到^^我在[connect]上發佈了我的第一個bug(https://connect.microsoft.com/VisualStudio/feedback/details/789199/fxcop-ca1047-abstract-and-accessibility-水平)所以,我會按照你的建議壓制它,Nicole Calinoiu。謝謝。 – kerrubin
該錯誤已作爲外部工具關閉:「產品團隊本身不再直接接受對Microsoft Visual Studio 2010及更早版本產品的反饋」...... – kerrubin