Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
我的示例代码:

public class GenericClass<T> : IDisposable where T: System.Data.Linq.DataContext
{
    public T context{ get; private set; }

    public GenericClass()
    {
        this.context= default(T); // default(T) return null
        // code
    }

    public void Dispose()
    {
        context.Dispose();
    }
}


使用GenericClasss示例代码:

using (GenericClasss <DataAccessDataContext> dataAccess = new GenericClasss <DataAccessDataContext>())
{
  //code
}


其中,DataAccessDataContext是.dbml(继承自System.Data.Linq.DataContext),并且具有默认构造函数

抱歉,这很简单,我没有注意到。非常感谢你。

最佳答案

如果您无法使用通用类型创建新对象,则应使用new()关键字:

public class GenericClass<T> : IDisposable where T: System.Data.Linq.DataContext, new()


并在构造函数中调用new T()

public GenericClass()
{
    this.context = new T();
}


编译器必须知道T具有默认构造函数。

关于c# - default(T)返回null,其中T继承自DataContext。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27041168/

10-13 04:56