我想知道new()关键字的下方。 new()与IDisposable一起在基本声明语句中,其中C:DbContext和IDisposedTracker。
但我想知道new()表达式。这是匿名基类声明吗?
但请注意我标记在new()旁边的几个箭头。这些花括号由公共类RepositoryBase拥有,而不是由new()。
拥有这里有什么新的()?
namespace PersonRepository
{
public class RepositoryBase<C> : IDisposable where C : DbContext, IDisposedTracker, new()
->{
public RepositoryBase()
{
DataContext.Database.CreateIfNotExists();
}
private C _DataContext;
public virtual C DataContext
{
get
{
if (_DataContext == null || _DataContext.IsDisposed)
{
_DataContext = new C();
AllowSerialization = true;
//Disable ProxyCreationDisabled to prevent the "In order to serialize the parameter, add the type to the known types collection for the operation using ServiceKnownTypeAttribute" error
}
return _DataContext;
}
}
//partly omitted
public void Save()
{
DataContext.SaveChanges();
}
public void Dispose()
{
if (DataContext != null) DataContext.Dispose();
}
}<-
}
答案 0 :(得分:0)
new()是一个代价...它意味着C必须是一个类并且有一个EMPTY CONSTRUCTOR
......