代码之家  ›  专栏  ›  技术社区  ›  mko

如何使公共构造函数和私有构造函数都为空?[已关闭]

  •  -1
  • mko  · 技术社区  · 7 年前

    如何使私有构造函数和公共构造函数都为空?我需要一个空的私有构造函数,因为我要先用EF编写代码。

    这个 documentation 表示:

    实体框架是否需要具有公共空构造函数的对象?

    虽然默认生成的类有一个自动提供的公共无参数构造函数,但框架中没有要求它是公共的。必须有一个无参数构造函数,但它可以是内部的或私有的。

    我的尝试:

        public class ImmediatePayment:Payment
        {
                private ImmediatePayment(){}
            
               //Problem
                public ImmediatePayment():basePayment(0){}
                
            //defining number other then 0 would make ImmediatePayment pointless, I could check the value of DeadlineDaysAfterOrder, but it seems really really nice to have a constructior without a number
                public ImmediatePayment(intDeadlineDaysAfterOrder):basePayment(DeadlineDaysAfterOrder){}
                
        }
                
    public class Payment
    {
          public int DeadlineDaysAfterOrder {get;private set;}
          
          private Payment(){}
          public Payment(int DeadlineDaysAfterOrder)
          {
          this.DeadlineDaysAfterOrder  = DeadlineDaysAfterOrder;
          }
    }
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   Tim Schmelter    7 年前

    答案是,不能在同一个类中同时具有空的私有构造函数和空的公共构造函数。但在这种情况下,不需要删除 private 构造函数。

    必须有一个无参数构造函数,它可以是 internal 私有的 。 但不一定是这样 私有的 ,可以是 public 这也是默认值(如果已生成)。

    参考号: Entity Framework FAQ: Entity Classes - Does the Entity Framework require objects with public empty constructors?