【发布时间】:2018-03-28 14:32:24
【问题描述】:
我怎样才能同时拥有私有和公共的空构造函数?我需要一个空的私有构造函数,因为我首先使用 EF 编写代码。
实体框架是否需要具有公共空构造函数的对象?
虽然默认生成的类有一个自动提供的公共无参数构造函数,但框架中没有任何东西要求它是公共的。必须有一个无参数的构造函数,但它可以是内部的或私有的。
我的尝试:
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;
}
}
【问题讨论】:
-
那么你为什么需要
public? -
我非常有兴趣了解您为什么认为需要此功能
-
拥有私有构造函数的要点是不允许对象被公开构造。如果您希望它是公开构造的,那么您不需要私有构造函数。
-
EF Code First 不需要任何显式构造函数(如果这些构造函数是实体)。我认为您需要向我们提供更多背景信息,说明您认为自己需要这个的原因。
-
这是一个典型的 X-Y 问题。
标签: c# ef-code-first code-first