C#中基本声明语句中的new()关键字

时间:2017-08-18 09:21:32

标签: c#

我想知道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();
        }
    }<-      
}

1 个答案:

答案 0 :(得分:0)

new()是一个代价...它意味着C必须是一个类并且有一个EMPTY CONSTRUCTOR ......