防止c#类实现接口中定义的方法以外的任何方法

本文关键字:方法 任何 定义 实现 接口 防止 | 更新日期: 2023-09-27 18:13:45

是否有可能在Visual Studio (c#)中定义一个带有某些方法的接口,并强制实现该接口的类只定义接口中定义的方法,并防止类定义接口中未指定的任何方法?

防止c#类实现接口中定义的方法以外的任何方法

据我所知,接口是一个包容性契约,而不是排他性契约。处理这个问题的方法是调用类的接口实例化,而不是调用具体的实例化。请看下面的例子。通过这样做,您可以将代码限制为只能看到接口定义的特定方法。

现在,有些人会指出您可以编写一个框架,并使用反射来比较接口方法和类方法-但我不怀疑这是OPs的意图。
public interface IMyInterface
{
    bool AmITrue { get; set; }
}
public class Class1 : IMyInterface
{
    public bool AmITrue { get; set; }
    public bool AmIAnotherProperty { get; set; }
}
public class MainClass
{
    public MainClass()
    {
        IMyInterface limitedClass = new Class1();
        var works = limitedClass.AmITrue;
        var doesNotWork = limitedClass.AmIAnotherProperty;
    }
}

不,那是不可能的。

但听起来你真的想定义一个class本身,这不是达到同样的目的吗?