C# Compiler Errors and Warn ...


Visual C# Reference: Errors and Warnings
Compiler Error CS0417

Error Message

'identifier': cannot provide arguments when creating an instance of a variable type

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.

Example

The following example generates CS0417:

// CS0417
class C<T> where T : new()
{
    T type = new T(1);   // CS0417
}
Tags :


Community Content

Griestopf
Constructor constraint only works with default constructor

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!

Tags : contentbug

dtackett
You can work around this issue using Activator.CreateInstance
public class DataContextFactory<T> where T : DataContext
{
public static T GetDataContext()
{
T retval = (T) Activator.CreateInstance(typeof(T),
new object[] { GetConnectionString() });
return retval;
}
..
..
}

Page view tracker