using System;
public class Repository: Key.CreateProxy {
public void Add( int data) {
Key key = Create( ) ;
// 以下データの保存処理とか
}
}
public class Key{
public int Value{ get; private set; }
// 外部からの生成禁止
private Key( int i) {
Value = i;
}
// このプロキシを継承したクラスでしか生成できない
internal class CreateProxy{
static int s_Increment = 0 ;
protected static Key Create( ) {
return new Key( s_Increment++ ) ;
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFJlcG9zaXRvcnk6IEtleS5DcmVhdGVQcm94eXsKCiAgICBwdWJsaWMgdm9pZCBBZGQoaW50IGRhdGEpewoKICAgICAgICBLZXkga2V5ID0gQ3JlYXRlKCk7CgogICAgICAgIC8vIOS7peS4i+ODh+ODvOOCv+OBruS/neWtmOWHpueQhuOBqOOBiwogICAgfQp9CgoKcHVibGljIGNsYXNzIEtleXsKCglwdWJsaWMgaW50IFZhbHVle2dldDsgcHJpdmF0ZSBzZXQ7fQoKCS8vIOWklumDqOOBi+OCieOBrueUn+aIkOemgeatogoJcHJpdmF0ZSBLZXkoaW50IGkpewoJCVZhbHVlID0gaTsKCX0KCgkvLyDjgZPjga7jg5fjg63jgq3jgrfjgpLntpnmib/jgZfjgZ/jgq/jg6njgrnjgafjgZfjgYvnlJ/miJDjgafjgY3jgarjgYQKCWludGVybmFsIGNsYXNzIENyZWF0ZVByb3h5ewoJCXN0YXRpYyBpbnQgc19JbmNyZW1lbnQgPSAwOwoKCQlwcm90ZWN0ZWQgc3RhdGljIEtleSBDcmVhdGUoKXsKCQkJcmV0dXJuIG5ldyBLZXkoc19JbmNyZW1lbnQrKyk7CgkJfQoJfQp9
compilation info
prog.cs(3,14): error CS0060: Inconsistent accessibility: base class `Key.CreateProxy' is less accessible than class `Repository'
prog.cs(24,17): (Location of the symbol related to previous error)
Compilation failed: 1 error(s), 0 warnings
stdout