Click here to Skip to main content
Rate this: bad
good
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 23:43pm
Mehdi Gholam250.1K
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 at 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
0 OriginalGriff 381
1 Sergey Alexandrovich Kryukov 245
2 Marcin Kozub 225
3 Praneet Nadkar 217
4 /\jmot 189
0 OriginalGriff 8,284
1 Sergey Alexandrovich Kryukov 7,407
2 DamithSL 5,614
3 Maciej Los 4,989
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web04 | 2.8.1411023.1 | Last Updated 16 Feb 2012
Copyright © CodeProject, 1999-2014
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