避免访问嵌套类的构造函数



这里是我的问题的一组代码示例:

class FooMaster
{
private static FooChildBase GetFooChild(int number)
{
switch(number)
{
case 1:
return new FooChild1();
case 2:
return new FooChild2();
default:
throw new NotImplementedException("...");    
}
}
public static string GetFooChildText1Value(int number)
{
FooChildBase fooChild = GetFooChild(number);
return (fooChild?.Text1) ?? throw new NullReferenceException("...");
}
...
class FooChild1 : FooChildBase
{
internal override string Text1 { get; } = "Test"
public static void Test()
{
//Do something
}
}
class FooChild2 : FooChildBase
{
internal override string Text1 { get; } = "Test"
}

abstract class FooChildBase
{
internal abstract string Text1 { get; }
}
}

我想完成的:

您应该:

  • 只有当您从另一个类调用"GetFooChildText1Value",然后调用FooMaster时,才能访问Text1
  • 能够访问FooMaster中FooChild1和FooChild2的值和构造函数
  • 无法从FooMaster外部调用FooChild1或FooChild2的构造函数
  • -->也无法从FooMaster外部查看FooChild1或FooChild2的属性

编辑:

FooChild1和FooChild2类型必须从外部知道,因为您需要能够直接调用单独的公共静态方法(我不想让方法只调用下一个方法(

更新:

最后,我创建了另一个类库,并将构造函数定义为内部构造函数。这样,它只能在此程序集中访问。

所提出的接口解决方案也可以工作,但我必须为每个类创建一个单独的接口。

谢谢你的快速回答!

相关内容

  • 没有找到相关文章

最新更新