在Visual Studio(C#)中是否可以使用某种方法定义接口并强制实现此接口的类仅定义接口中定义的方法,并阻止类定义未指定的任何方法在界面?
答案 0 :(得分:2)
据我所知,界面是一个包容性合同,而不是排他性合同。你想要处理的方法是调用你的接口实例化而不是具体的接口实例。请参阅下面的示例。这样,您将代码限制为仅查看接口定义的特定方法。
现在,有些人会指出你可以编写一个框架,并使用反射来将接口方法与类方法进行比较 - 但我不怀疑这是OP的意图。
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;
}
}
答案 1 :(得分:2)
不,这是不可能的。
但听起来你真的想要定义一个class
本身,不会达到同样的目的吗?