how to restrict setting a property of innerclass just from the outer class in c#

前端 未结 2 1141
被撕碎了的回忆
被撕碎了的回忆 2021-01-29 07:24

I have the nub of the code like this:

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


        
相关标签:
2条回答
  • 2021-01-29 07:40

    I'm afraid there is no access modifier which allows that. You can create IInnerClass interface and make the property readonly within interface declaration:

    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; }
        }
    }
    
    0 讨论(0)
  • 2021-01-29 07:58

    There is no protection level for that. internal is the tightest you can use, which is limited to files in the same assembly. If you cannot make it a constructor parameter as has been proposed, you could use an interface:

    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; }
        }
    }
    
    0 讨论(0)
提交回复
热议问题