[英]How to hide methods outside the class
我正在尝试做某事,但我不知道我是否有可能拥有这些课程:
public Class1
{
private Class2 class2;
public Class1
{
this.class2 = new Class2();
}
public Class2 Do()
{
return class2.Build();
}
}
internal Class2
{
public internal Class2 Build()
{
return this;
}
public void Fill()
{
}
}
var class1 = new Class1();
class1.Do().Fill();
当用户键入class1.Do()时,我想要它。 只有 Fill () 方法是可访问的。 我怎样才能做到这一点?
目标是防止 class1.Do().Build();
如评论中所述,发布的代码中有很多错误。 为了示例答案,我将所有麻烦的地方都公开了。 因此,虽然这将编译,但仍需谨慎对待,并适当调整您的可访问性修饰符。
首先,我创建了一个新接口,只公开 Fill,而不是 Build:
public interface IClass2Helper
{
void Fill();
}
我对Class1
和Class2
进行了一些小的更改,以便它们变得可编译,以实现Class2
中的接口并返回Class1
中的Do()
方法中的接口:
public class Class1
{
private Class2 class2;
public Class1()
{
this.class2 = new Class2();
}
public IClass2Helper Do()
{
return class2.Build();
}
}
public class Class2 : IClass2Helper
{
public Class2 Build()
{
return this;
}
public void Fill() { }
}
并添加了一个简单的测试类/方法来验证:
class TestProgram
{
static void Main()
{
var class1 = new Class1();
class1.Do().Fill(); //This line is OK
//The below line will have an error since the interface doesn't expose a Build method
class1.Do().Build();
}
}
代码的小提琴:
https://dotnetfiddle.net/5EPPfO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.