我如何同时拥有公共和私有空构造函数?

时间:2018-03-28 14:32:24

标签: c# ef-code-first code-first

如何同时拥有私有和公共空构造函数?我需要一个空的私有构造函数,因为我先用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 个答案:

答案 0 :(得分:2)

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

必须有无参数构造函数,它可以是internalprivate。 但它不必是private,它可以是public,如果它是生成的,它也是默认值。

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