Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

typeof: how to get type from string

Tags:

c#

.net

I've many objects, each of which I have information in string about its type.
like:

string stringObjectType = "DateTime"; 

While running, I have no object itself.
So I can not test it typeof (object)

How can I get while running the type of the object by:

typeof (stringObjectType) 
like image 692
Refael Avatar asked Feb 27 '13 09:02

Refael


People also ask

How do you find a type object?

Get and print the type of an object: type() type() returns the type of an object. You can use this to get and print the type of a variable and a literal like typeof in other programming languages. The return value of type() is type object such as str or int .

How does type GetType work?

GetType() call on each assembly in the list and passing in the type's full name. Type. GetType() will most likely be using the references of the currently assembly to resolve the type, so if the type exists in an assembly that is not a reference, it will not be found.


2 Answers

try {     // Get the type of a specified class.     Type myType1 = Type.GetType("System.DateTime");     Console.WriteLine("The full name is {myType1.FullName}.");      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.     Type myType2 = Type.GetType("NoneSuch", true);     Console.WriteLine("The full name is {myType2.FullName}."); } catch(TypeLoadException e) {     Console.WriteLine(e.Message); } catch(Exception e) {     Console.WriteLine(e.Message); } 

See Type.GetType(string) on MSDN

like image 122
HardLuck Avatar answered Oct 05 '22 04:10

HardLuck


You can use Type.GetType() to get a type from its string name. So you can do:

Type DateType = Type.GetType("System.DateTime"); 

You can't just use "DateTime" since that's not the type's name. If you do this and the name is wrong (it doesn't exist) then it'll throw an exception. So you'll need a try/catch around this.

You can get the proper type name for any given object by doing:

string TypeName = SomeObject.GetType().FullName; 

If you need to use vague or incomplete names, then you're going to have a fun time messing around with reflection. Not impossible, but certainly a pain.

like image 42
PhonicUK Avatar answered Oct 05 '22 04:10

PhonicUK