I definitely remember seeing somewhere an example of doing so using reflection or something. It was something that had to do with SqlParameterCollection
which is not creatable by a user (if I'm not mistaken). Unfortunately cannot find it any longer.
Can anyone please share this trick here? Not that I consider it a valid approach in development, I'm just very interested in the possibility of doing this.
You can use one of the overloads of Activator.CreateInstance to do this: Activator.CreateInstance(Type type, bool nonPublic)
Use true
for the nonPublic
argument. Because true
matches a public or non-public default constructor; and false
matches only a public default constructor.
For example:
class Program
{
public static void Main(string[] args)
{
Type type=typeof(Foo);
Foo f=(Foo)Activator.CreateInstance(type,true);
}
}
class Foo
{
private Foo()
{
}
}