| 属性 | 值 |
|---|---|
| 规则 ID | CA2257 |
| 标题 | 在具有“DynamicInterfaceCastableImplementationAttribute”的接口上定义的成员应为“static” |
| 类别 | 使用情况 |
| 修复是中断修复还是非中断修复 | 非中断 |
| 在 .NET 9 中默认启用 | 作为警告 |
原因
未显式实现接口成员或将其标记为 static。
规则说明
由于实现 IDynamicInterfaceCastable 的类型可能未在元数据中实现动态接口,因此,如果调用一个实例接口成员,而该成员并非此类型上定义的显式实现,则可能会在运行时失败。 若要避免运行时错误,请将新接口成员标记为 static。
如何解决冲突
将接口成员标记为 static。
Example
[DynamicInterfaceCastableImplementation]
interface IExample
{
// This method violates the rule.
void BadMethod();
// This method satisfies the rule.
static void GoodMethod()
{
// ...
}
}
何时禁止显示错误
不禁止显示此规则发出的警告。