-1

我有这样的代码:

public class OuterClass
{
    public static InnerClass GetInnerClass()
    {
        return new InnerClass() { MyProperty = 1 };
    }

    public class InnerClass
    {
        public int MyProperty { get; set; }
    }
}

什么是名为的属性的解决方案MyProperty可以从InnerClass和设置OuterClass,并且在这些范围之外,MyProperty只是只读的

4

2 回答 2

3

没有保护级别。internal是您可以使用的最严格的,仅限于同一程序集中的文件。如果您不能按照建议将其设为构造函数参数,则可以使用接口:

public class OuterClass
{
    public static InnerClass GetInnerClass()
    {
        return new InnerClassImpl() { MyProperty = 1 };
    }

    public interface InnerClass
    {
        int MyProperty { get; }
    }
    private class InnerClassImpl : InnerClass
    {
        public int MyProperty { get; set; }
    }
}
于 2014-01-29T18:15:05.703 回答
2

恐怕没有允许这样做的访问修饰符。您可以在接口声明中创建IInnerClass接口并使属性只读:

public class OuterClass
{
    public static IInnerClass GetInnerClass()
    {
        return new InnerClass() { MyProperty = 1 };
    }

    public interface IInnerClass
    {
        int MyProperty { get; }
    }

    private class InnerClass : IInnerClass
    {
        public int MyProperty { get; set; }
    }
}
于 2014-01-29T18:19:53.530 回答