Click here to Skip to main content
12,292,006 members (72,469 online)
Rate this:
 
Please Sign up or sign in to vote.
See more: C#
Say we have a class like this :
public class someclass<T> : Iinterface {}
And we have a function like this:
public Iinterface Create(Type type)
{
// how to return ?
}
How can we return an instance of the someclass based on a parameter say typeof(int) in the Create method without ugly "if then" or "switch" statements?
Posted 15-Feb-12 22:43pm
Mehdi Gholam307.8K
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 3

Type finalType = typeof(someclass<>);
return Activator.CreateInstance(finalType.MakeGenericType(type));

See also this blog[^] which a Google search turned up.
  Permalink  
Comments
Mehdi Gholam 16-Feb-12 6:02am
   
Great it works! I had to pass args to the ctor but that's ok.

My 5!
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 1

  Permalink  
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 2

Reflection allows you to create objects dynamically:
string myType = "MyNamespace.MyClass";
Assembly asm = Assembly.GetExecutingAssembly();
Type t = asm.GetType(myType);
Object o = Activator.CreateInstance(t, null, null);
So in your case, you would need just the last line.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web02 | 2.8.160518.1 | Last Updated 16 Feb 2012
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100