This error occurs if a call to the new operator on a type parameter has arguments. The only constructor that can be called using the new operator on an unknown parameter type is a constructor with no arguments. If you need to call another constructor, consider using a class type constraint or interface constraint.
The following example generates CS0417:
// CS0417 class C<T> where T : new() { T type = new T(1); // CS0417 }
You cannot call other constructors than the default constructor. Something like
class TBase{ private int ii; public TBase(int i) { ii = i; }}
class C<T> where T : TBase{ T type = new T(42);}
doesn't work!
public class DataContextFactory<T> where T : DataContext{ public static T GetDataContext() { T retval = (T) Activator.CreateInstance(typeof(T), new object[] { GetConnectionString() }); return retval; }....}