C# 故意阻止我将内部访问修饰符放在接口成员上。我很确定当他们本可以允许的时候,他们必须付出额外的努力来实施这个限制。
应该有充分的理由花费这些努力——哪一个?
对我来说,在接口上使用内部访问修饰符以实现“从外部防止可变性”会很有用。例如考虑以下接口:
interface IMessage
{
...
DateTime LastSentTimestamp { get; internal set; }
...
}
在内部,在我的消息代理中,我希望能够设置LastSentTimestamp
. 我的 API 的外部用户应该无法更改它。当然,我可以放弃接口并改用一个类,但是,这消除了接口的所有优点(例如,随时更改实现等)
Q1:我不明白他们为什么限制我。有什么特别的原因吗?
Q2:我正在为我上面的特殊情况寻找一种解决方法。将界面一分为二 (IMessage
和IInternalMessage
) 看起来很麻烦,希望这不是我唯一的选择......