|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
How to get Enum type using Enum name?How do I get an Enum's type using only the Enum name?
e.g. Dim enumType as System.Type Dim enumName as String = "MyEnum" enumType = ???(enumName) I've tried using Type.GetType(enumName) to retrieve an Enum's type by name, but I always get the value Nothing in return. - Don not sure i follow, don...
all enums only have integer/numeric members. perhaps you mean something else? "Don" <unkn***@oblivion.com> wrote in message news:EaD4e.904575$Xk.345025@pd7tw3no...Show quoteHide quote | How do I get an Enum's type using only the Enum name? | | e.g. | | Dim enumType as System.Type | Dim enumName as String = "MyEnum" | | enumType = ???(enumName) | | | I've tried using Type.GetType(enumName) to retrieve an Enum's type by name, | but I always get the value Nothing in return. | | - Don | | ?
I don't understand what the possible values of an Enum has to do with getting a Type object for an Enum. Show quoteHide quote "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... > not sure i follow, don... > > all enums only have integer/numeric members. perhaps you mean something > else? > > > "Don" <unkn***@oblivion.com> wrote in message > news:EaD4e.904575$Xk.345025@pd7tw3no... > | How do I get an Enum's type using only the Enum name? > | > | e.g. > | > | Dim enumType as System.Type > | Dim enumName as String = "MyEnum" > | > | enumType = ???(enumName) > | > | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type by > name, > | but I always get the value Nothing in return. > | > | - Don > | > | > > the quandry, of course, is that the type of object of an enum is...enum. the
possible values of the members of an enum were not what i commented on, but the fact that the members themselves are all, and always, integer values. hence, to me, you question is a bit vexing...an enum object is an enum type and its members are integers. could you be more specific is what it is you'd like to discover about an enum? "Don" <unkn***@oblivion.com> wrote in message news:osD4e.908411$6l.111545@pd7tw2no...Show quoteHide quote | ? | | I don't understand what the possible values of an Enum has to do with | getting a Type object for an Enum. | | | "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... | > not sure i follow, don... | > | > all enums only have integer/numeric members. perhaps you mean something | > else? | > | > | > "Don" <unkn***@oblivion.com> wrote in message | > news:EaD4e.904575$Xk.345025@pd7tw3no... | > | How do I get an Enum's type using only the Enum name? | > | | > | e.g. | > | | > | Dim enumType as System.Type | > | Dim enumName as String = "MyEnum" | > | | > | enumType = ???(enumName) | > | | > | | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type by | > name, | > | but I always get the value Nothing in return. | > | | > | - Don | > | | > | | > | > | | When you create an Enum, you create a new Type. Any variable that is
declared as an Enum has that Enum as it's type. A variable is not of type Integer when declared as an Enum you've created. The System.Type class even has a property call IsEnum. I've written other code that retrieves all nested types of a class, and Enums declared in the class are returned as Types. I know you can get the Type of an Enum. I just can't seem to get it to work when I'm just passing the name of the Enum to Type.GetType(). I am trying to determine all the members of an Enum, given only the Enum's name. That is, I want to get the Enum's Type so I can use the Enum.GetNames() or Enum.GetValues() method to retrieve a list of all of its members. I don't know how else to put it. Show quoteHide quote "steve" <a@b.com> wrote in message news:hXD4e.6115$HC3.5488@fe07.lga... > the quandry, of course, is that the type of object of an enum is...enum. the > possible values of the members of an enum were not what i commented on, but > the fact that the members themselves are all, and always, integer values. > > hence, to me, you question is a bit vexing...an enum object is an enum type > and its members are integers. > > could you be more specific is what it is you'd like to discover about an > enum? > > > "Don" <unkn***@oblivion.com> wrote in message > news:osD4e.908411$6l.111545@pd7tw2no... > | ? > | > | I don't understand what the possible values of an Enum has to do with > | getting a Type object for an Enum. > | > | > | "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... > | > not sure i follow, don... > | > > | > all enums only have integer/numeric members. perhaps you mean something > | > else? > | > > | > > | > "Don" <unkn***@oblivion.com> wrote in message > | > news:EaD4e.904575$Xk.345025@pd7tw3no... > | > | How do I get an Enum's type using only the Enum name? > | > | > | > | e.g. > | > | > | > | Dim enumType as System.Type > | > | Dim enumName as String = "MyEnum" > | > | > | > | enumType = ???(enumName) > | > | > | > | > | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type by > | > name, > | > | but I always get the value Nothing in return. > | > | > | > | - Don > | > | > | > | > | > > | > > | > | > > hmmm...
so you're saying that when you create an enum, you are actually creating an object who's base class is enum? such that: enum foo bar = 0 end enum dim e as foo if typeof e is foo then return true would not throw an error and neither would: dim e as object = foo if typeof e is enum then return true both would return true...that about right? perhaps, i just haven't had need to discover that nuance yet. i have seen in this ng code that does exactly what you're wanting to do. have you googled yet? "Don" <unkn***@oblivion.com> wrote in message news:qnR4e.915721$6l.12993@pd7tw2no...Show quoteHide quote | When you create an Enum, you create a new Type. Any variable that is | declared as an Enum has that Enum as it's type. A variable is not of type | Integer when declared as an Enum you've created. The System.Type class even | has a property call IsEnum. I've written other code that retrieves all | nested types of a class, and Enums declared in the class are returned as | Types. I know you can get the Type of an Enum. I just can't seem to get it | to work when I'm just passing the name of the Enum to Type.GetType(). | | I am trying to determine all the members of an Enum, given only the Enum's | name. That is, I want to get the Enum's Type so I can use the | Enum.GetNames() or Enum.GetValues() method to retrieve a list of all of its | members. I don't know how else to put it. | | | | "steve" <a@b.com> wrote in message news:hXD4e.6115$HC3.5488@fe07.lga... | > the quandry, of course, is that the type of object of an enum is...enum. | the | > possible values of the members of an enum were not what i commented on, | but | > the fact that the members themselves are all, and always, integer values. | > | > hence, to me, you question is a bit vexing...an enum object is an enum | type | > and its members are integers. | > | > could you be more specific is what it is you'd like to discover about an | > enum? | > | > | > "Don" <unkn***@oblivion.com> wrote in message | > news:osD4e.908411$6l.111545@pd7tw2no... | > | ? | > | | > | I don't understand what the possible values of an Enum has to do with | > | getting a Type object for an Enum. | > | | > | | > | "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... | > | > not sure i follow, don... | > | > | > | > all enums only have integer/numeric members. perhaps you mean | something | > | > else? | > | > | > | > | > | > "Don" <unkn***@oblivion.com> wrote in message | > | > news:EaD4e.904575$Xk.345025@pd7tw3no... | > | > | How do I get an Enum's type using only the Enum name? | > | > | | > | > | e.g. | > | > | | > | > | Dim enumType as System.Type | > | > | Dim enumName as String = "MyEnum" | > | > | | > | > | enumType = ???(enumName) | > | > | | > | > | | > | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type | by | > | > name, | > | > | but I always get the value Nothing in return. | > | > | | > | > | - Don | > | > | | > | > | | > | > | > | > | > | | > | | > | > | | This is the solution to my problem (which I posted in a different branch of
my original thread): ' Known information about Enum Dim assemblyName as String = "OtherDLL" Dim enumName as String = "OtherDLL.Enumerations+abc" Dim ax As System.Reflection.Assembly = _ System.Reflection.Assembly.Load(assemblyName) Dim tx As Type = ax.GetType(enumName) What's stored in the tx variable is the result I was seeking. I wanted to get the type of an Enum using just a string containing the Enum's name. This is how to do it (when the Enum is in a different assembly). It boils down to this: <Assembly>.GetType(<EnumNameAsString>) - Don Show quoteHide quote "steve" <a@b.com> wrote in message news:KKV4e.16$gy6.4@fe05.lga... > hmmm... > > so you're saying that when you create an enum, you are actually creating an > object who's base class is enum? such that: > > enum foo > bar = 0 > end enum > > dim e as foo > if typeof e is foo then return true > > would not throw an error and neither would: > > dim e as object = foo > if typeof e is enum then return true > > both would return true...that about right? perhaps, i just haven't had need > to discover that nuance yet. i have seen in this ng code that does exactly > what you're wanting to do. have you googled yet? > > > "Don" <unkn***@oblivion.com> wrote in message > news:qnR4e.915721$6l.12993@pd7tw2no... > | When you create an Enum, you create a new Type. Any variable that is > | declared as an Enum has that Enum as it's type. A variable is not of type > | Integer when declared as an Enum you've created. The System.Type class > even > | has a property call IsEnum. I've written other code that retrieves all > | nested types of a class, and Enums declared in the class are returned as > | Types. I know you can get the Type of an Enum. I just can't seem to get > it > | to work when I'm just passing the name of the Enum to Type.GetType(). > | > | I am trying to determine all the members of an Enum, given only the Enum's > | name. That is, I want to get the Enum's Type so I can use the > | Enum.GetNames() or Enum.GetValues() method to retrieve a list of all of > its > | members. I don't know how else to put it. > | > | > | > | "steve" <a@b.com> wrote in message news:hXD4e.6115$HC3.5488@fe07.lga... > | > the quandry, of course, is that the type of object of an enum is...enum. > | the > | > possible values of the members of an enum were not what i commented on, > | but > | > the fact that the members themselves are all, and always, integer > values. > | > > | > hence, to me, you question is a bit vexing...an enum object is an enum > | type > | > and its members are integers. > | > > | > could you be more specific is what it is you'd like to discover about an > | > enum? > | > > | > > | > "Don" <unkn***@oblivion.com> wrote in message > | > news:osD4e.908411$6l.111545@pd7tw2no... > | > | ? > | > | > | > | I don't understand what the possible values of an Enum has to do with > | > | getting a Type object for an Enum. > | > | > | > | > | > | "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... > | > | > not sure i follow, don... > | > | > > | > | > all enums only have integer/numeric members. perhaps you mean > | something > | > | > else? > | > | > > | > | > > | > | > "Don" <unkn***@oblivion.com> wrote in message > | > | > news:EaD4e.904575$Xk.345025@pd7tw3no... > | > | > | How do I get an Enum's type using only the Enum name? > | > | > | > | > | > | e.g. > | > | > | > | > | > | Dim enumType as System.Type > | > | > | Dim enumName as String = "MyEnum" > | > | > | > | > | > | enumType = ???(enumName) > | > | > | > | > | > | > | > | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type > | by > | > | > name, > | > | > | but I always get the value Nothing in return. > | > | > | > | > | > | - Don > | > | > | > | > | > | > | > | > > | > | > > | > | > | > | > | > > | > > | > | > > lemme guess, you have an function/sub/property param that could be one of
many enum's and you're trying to decide, by name, which to use for conversion/validation/action to preform? is it that or something similar? "Don" <unkn***@oblivion.com> wrote in message news:osD4e.908411$6l.111545@pd7tw2no...Show quoteHide quote | ? | | I don't understand what the possible values of an Enum has to do with | getting a Type object for an Enum. | | | "steve" <a@b.com> wrote in message news:MoD4e.1415$AF6.312@fe04.lga... | > not sure i follow, don... | > | > all enums only have integer/numeric members. perhaps you mean something | > else? | > | > | > "Don" <unkn***@oblivion.com> wrote in message | > news:EaD4e.904575$Xk.345025@pd7tw3no... | > | How do I get an Enum's type using only the Enum name? | > | | > | e.g. | > | | > | Dim enumType as System.Type | > | Dim enumName as String = "MyEnum" | > | | > | enumType = ???(enumName) | > | | > | | > | I've tried using Type.GetType(enumName) to retrieve an Enum's type by | > name, | > | but I always get the value Nothing in return. | > | | > | - Don | > | | > | | > | > | |
Show quote
Hide quote
"Don" <unkn***@oblivion.com> schrieb: Make sure you fully qualify the type name correctly. You can determine a > How do I get an Enum's type using only the Enum name? > > e.g. > > Dim enumType as System.Type > Dim enumName as String = "MyEnum" > > enumType = ???(enumName) > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type by > name, > but I always get the value Nothing in return. type's full name by using 'GetType(<type name>).FullName'. -- M S Herfried K. Wagner M V P <URL:http://dotnet.mvps.org/> V B <URL:http://classicvb.org/petition/> Hmmm... What you suggest works, but only if the Enum is declared in the same
project. If I try to do the same thing with an Enum declared in a referenced dll, then the Type.GetType() method returns Nothing. This is the code I am executing: Public Enum abc val1 = 1 val2 = 2 End Enum Dim s As String s = GetType(abc).FullName Dim t As Type t = Type.GetType(s) ' <--- Works! This works fine. However, if, say, the "abc" Enum existed in a dll that I was referencing, the code does not work: ' (assuming "abc" is a publicly declared Enum in a public module called ' "Enumerations" in the referenced class library "OtherDLL") Dim s As String s = GetType(OtherDLL.Enumerations.abc).FullName Dim t As Type t = Type.GetType(s) ' <--- Fails! Show quoteHide quote "Herfried K. Wagner [MVP]" <hirf-spam-me-here@gmx.at> wrote in message news:O6CDFniOFHA.2468@tk2msftngp13.phx.gbl... > "Don" <unkn***@oblivion.com> schrieb: > > How do I get an Enum's type using only the Enum name? > > > > e.g. > > > > Dim enumType as System.Type > > Dim enumName as String = "MyEnum" > > > > enumType = ???(enumName) > > > > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type by > > name, > > but I always get the value Nothing in return. > > > Make sure you fully qualify the type name correctly. You can determine a > type's full name by using 'GetType(<type name>).FullName'. > > -- > M S Herfried K. Wagner > M V P <URL:http://dotnet.mvps.org/> > V B <URL:http://classicvb.org/petition/> > I just discovered that the following code works:
' (assuming "abc" is a publicly declared Enum in a public module called ' "Enumerations" in the referenced class library "OtherDLL") Dim s As String s = GetType(OtherDLL.Enumerations.abc).AssemblyQualifiedName '<--- NOT FullName Dim t As Type t = Type.GetType(s) ' <--- Works! Thanks for pointing me into the right direction. - Don "Don" <unkn***@oblivion.com> wrote in message news:ZrR4e.914768$8l.831814@pd7tw1no...Show quoteHide quote > Hmmm... What you suggest works, but only if the Enum is declared in the same > project. If I try to do the same thing with an Enum declared in a > referenced dll, then the Type.GetType() method returns Nothing. > > This is the code I am executing: > > Public Enum abc > val1 = 1 > val2 = 2 > End Enum > > Dim s As String > s = GetType(abc).FullName > > Dim t As Type > t = Type.GetType(s) ' <--- Works! > > This works fine. However, if, say, the "abc" Enum existed in a dll that I > was referencing, the code does not work: > > ' (assuming "abc" is a publicly declared Enum in a public module called > ' "Enumerations" in the referenced class library "OtherDLL") > Dim s As String > s = GetType(OtherDLL.Enumerations.abc).FullName > > Dim t As Type > t = Type.GetType(s) ' <--- Fails! > > > "Herfried K. Wagner [MVP]" <hirf-spam-me-here@gmx.at> wrote in message > news:O6CDFniOFHA.2468@tk2msftngp13.phx.gbl... > > "Don" <unkn***@oblivion.com> schrieb: > > > How do I get an Enum's type using only the Enum name? > > > > > > e.g. > > > > > > Dim enumType as System.Type > > > Dim enumName as String = "MyEnum" > > > > > > enumType = ???(enumName) > > > > > > > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type by > > > name, > > > but I always get the value Nothing in return. > > > > > > Make sure you fully qualify the type name correctly. You can determine a > > type's full name by using 'GetType(<type name>).FullName'. > > > > -- > > M S Herfried K. Wagner > > M V P <URL:http://dotnet.mvps.org/> > > V B <URL:http://classicvb.org/petition/> > > > > Duh. I forgot that I will only have the name of the Enum as a string to
start with. It doesn't look like I'll be able to do this because the AssembylQualifiedName -- which is what I need to start off with -- contains version information which may change, so it cannot be hardcoded into my project. Argh! "Don" <unkn***@oblivion.com> wrote in message news:IAR4e.915774$6l.884013@pd7tw2no...Show quoteHide quote > I just discovered that the following code works: > > ' (assuming "abc" is a publicly declared Enum in a public module called > ' "Enumerations" in the referenced class library "OtherDLL") > Dim s As String > s = GetType(OtherDLL.Enumerations.abc).AssemblyQualifiedName '<--- NOT > FullName > > Dim t As Type > t = Type.GetType(s) ' <--- Works! > > Thanks for pointing me into the right direction. > > - Don > > > "Don" <unkn***@oblivion.com> wrote in message > news:ZrR4e.914768$8l.831814@pd7tw1no... > > Hmmm... What you suggest works, but only if the Enum is declared in the > same > > project. If I try to do the same thing with an Enum declared in a > > referenced dll, then the Type.GetType() method returns Nothing. > > > > This is the code I am executing: > > > > Public Enum abc > > val1 = 1 > > val2 = 2 > > End Enum > > > > Dim s As String > > s = GetType(abc).FullName > > > > Dim t As Type > > t = Type.GetType(s) ' <--- Works! > > > > This works fine. However, if, say, the "abc" Enum existed in a dll that I > > was referencing, the code does not work: > > > > ' (assuming "abc" is a publicly declared Enum in a public module > called > > ' "Enumerations" in the referenced class library "OtherDLL") > > Dim s As String > > s = GetType(OtherDLL.Enumerations.abc).FullName > > > > Dim t As Type > > t = Type.GetType(s) ' <--- Fails! > > > > > > "Herfried K. Wagner [MVP]" <hirf-spam-me-here@gmx.at> wrote in message > > news:O6CDFniOFHA.2468@tk2msftngp13.phx.gbl... > > > "Don" <unkn***@oblivion.com> schrieb: > > > > How do I get an Enum's type using only the Enum name? > > > > > > > > e.g. > > > > > > > > Dim enumType as System.Type > > > > Dim enumName as String = "MyEnum" > > > > > > > > enumType = ???(enumName) > > > > > > > > > > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type by > > > > name, > > > > but I always get the value Nothing in return. > > > > > > > > > Make sure you fully qualify the type name correctly. You can determine > a > > > type's full name by using 'GetType(<type name>).FullName'. > > > > > > -- > > > M S Herfried K. Wagner > > > M V P <URL:http://dotnet.mvps.org/> > > > V B <URL:http://classicvb.org/petition/> > > > > > > > > > Success! To do what I want to do I will simply need to know one more thing:
the assembly the Enum is declared in. Here is a sample of code that works (I am typing this in manually, so it's a little different from my executing code): ' Known information about Enum Dim assemblyName as String = "OtherDLL" Dim enumName as String = "OtherDLL.Enumerations+abc" ' Note the "+" Dim ax As System.Reflection.Assembly = _ System.Reflection.Assembly.Load(assemblyName) Dim tx As Type = ax.GetType(enumName) ' <--- Works! Now I can get what I am looking for using the following code: Dim a1 As Array a1 = [Enum].GetNames(tx) - Don "Don" <unkn***@oblivion.com> wrote in message news:IDR4e.914849$8l.462977@pd7tw1no...Show quoteHide quote > Duh. I forgot that I will only have the name of the Enum as a string to > start with. It doesn't look like I'll be able to do this because the > AssembylQualifiedName -- which is what I need to start off with -- contains > version information which may change, so it cannot be hardcoded into my > project. Argh! > > > "Don" <unkn***@oblivion.com> wrote in message > news:IAR4e.915774$6l.884013@pd7tw2no... > > I just discovered that the following code works: > > > > ' (assuming "abc" is a publicly declared Enum in a public module > called > > ' "Enumerations" in the referenced class library "OtherDLL") > > Dim s As String > > s = GetType(OtherDLL.Enumerations.abc).AssemblyQualifiedName '<--- > NOT > > FullName > > > > Dim t As Type > > t = Type.GetType(s) ' <--- Works! > > > > Thanks for pointing me into the right direction. > > > > - Don > > > > > > "Don" <unkn***@oblivion.com> wrote in message > > news:ZrR4e.914768$8l.831814@pd7tw1no... > > > Hmmm... What you suggest works, but only if the Enum is declared in the > > same > > > project. If I try to do the same thing with an Enum declared in a > > > referenced dll, then the Type.GetType() method returns Nothing. > > > > > > This is the code I am executing: > > > > > > Public Enum abc > > > val1 = 1 > > > val2 = 2 > > > End Enum > > > > > > Dim s As String > > > s = GetType(abc).FullName > > > > > > Dim t As Type > > > t = Type.GetType(s) ' <--- Works! > > > > > > This works fine. However, if, say, the "abc" Enum existed in a dll that > I > > > was referencing, the code does not work: > > > > > > ' (assuming "abc" is a publicly declared Enum in a public module > > called > > > ' "Enumerations" in the referenced class library "OtherDLL") > > > Dim s As String > > > s = GetType(OtherDLL.Enumerations.abc).FullName > > > > > > Dim t As Type > > > t = Type.GetType(s) ' <--- Fails! > > > > > > > > > "Herfried K. Wagner [MVP]" <hirf-spam-me-here@gmx.at> wrote in message > > > news:O6CDFniOFHA.2468@tk2msftngp13.phx.gbl... > > > > "Don" <unkn***@oblivion.com> schrieb: > > > > > How do I get an Enum's type using only the Enum name? > > > > > > > > > > e.g. > > > > > > > > > > Dim enumType as System.Type > > > > > Dim enumName as String = "MyEnum" > > > > > > > > > > enumType = ???(enumName) > > > > > > > > > > > > > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type > by > > > > > name, > > > > > but I always get the value Nothing in return. > > > > > > > > > > > > Make sure you fully qualify the type name correctly. You can > determine > > a > > > > type's full name by using 'GetType(<type name>).FullName'. > > > > > > > > -- > > > > M S Herfried K. Wagner > > > > M V P <URL:http://dotnet.mvps.org/> > > > > V B <URL:http://classicvb.org/petition/> > > > > > > > > > > > > > > > > And an additional tip to those following in my footsteps: You can easily get
the assembly name from the full name of the Enum using the following bit of code: assemblyName = enumName.Substring(0, InStr(enumName, ".") - 1) Use this and you don't need to separately store the assembly name. - Don "Don" <unkn***@oblivion.com> wrote in message news:0LR4e.911987$Xk.128619@pd7tw3no...Show quoteHide quote > Success! To do what I want to do I will simply need to know one more thing: > the assembly the Enum is declared in. Here is a sample of code that works > (I am typing this in manually, so it's a little different from my executing > code): > > ' Known information about Enum > Dim assemblyName as String = "OtherDLL" > Dim enumName as String = "OtherDLL.Enumerations+abc" ' Note the "+" > > Dim ax As System.Reflection.Assembly = _ > System.Reflection.Assembly.Load(assemblyName) > Dim tx As Type = ax.GetType(enumName) ' <--- Works! > > Now I can get what I am looking for using the following code: > > Dim a1 As Array > a1 = [Enum].GetNames(tx) > > > - Don > > > "Don" <unkn***@oblivion.com> wrote in message > news:IDR4e.914849$8l.462977@pd7tw1no... > > Duh. I forgot that I will only have the name of the Enum as a string to > > start with. It doesn't look like I'll be able to do this because the > > AssembylQualifiedName -- which is what I need to start off with -- > contains > > version information which may change, so it cannot be hardcoded into my > > project. Argh! > > > > > > "Don" <unkn***@oblivion.com> wrote in message > > news:IAR4e.915774$6l.884013@pd7tw2no... > > > I just discovered that the following code works: > > > > > > ' (assuming "abc" is a publicly declared Enum in a public module > > called > > > ' "Enumerations" in the referenced class library "OtherDLL") > > > Dim s As String > > > s = GetType(OtherDLL.Enumerations.abc).AssemblyQualifiedName '<--- > > NOT > > > FullName > > > > > > Dim t As Type > > > t = Type.GetType(s) ' <--- Works! > > > > > > Thanks for pointing me into the right direction. > > > > > > - Don > > > > > > > > > "Don" <unkn***@oblivion.com> wrote in message > > > news:ZrR4e.914768$8l.831814@pd7tw1no... > > > > Hmmm... What you suggest works, but only if the Enum is declared in > the > > > same > > > > project. If I try to do the same thing with an Enum declared in a > > > > referenced dll, then the Type.GetType() method returns Nothing. > > > > > > > > This is the code I am executing: > > > > > > > > Public Enum abc > > > > val1 = 1 > > > > val2 = 2 > > > > End Enum > > > > > > > > Dim s As String > > > > s = GetType(abc).FullName > > > > > > > > Dim t As Type > > > > t = Type.GetType(s) ' <--- Works! > > > > > > > > This works fine. However, if, say, the "abc" Enum existed in a dll > that > > I > > > > was referencing, the code does not work: > > > > > > > > ' (assuming "abc" is a publicly declared Enum in a public module > > > called > > > > ' "Enumerations" in the referenced class library "OtherDLL") > > > > Dim s As String > > > > s = GetType(OtherDLL.Enumerations.abc).FullName > > > > > > > > Dim t As Type > > > > t = Type.GetType(s) ' <--- Fails! > > > > > > > > > > > > "Herfried K. Wagner [MVP]" <hirf-spam-me-here@gmx.at> wrote in message > > > > news:O6CDFniOFHA.2468@tk2msftngp13.phx.gbl... > > > > > "Don" <unkn***@oblivion.com> schrieb: > > > > > > How do I get an Enum's type using only the Enum name? > > > > > > > > > > > > e.g. > > > > > > > > > > > > Dim enumType as System.Type > > > > > > Dim enumName as String = "MyEnum" > > > > > > > > > > > > enumType = ???(enumName) > > > > > > > > > > > > > > > > > > I've tried using Type.GetType(enumName) to retrieve an Enum's type > > by > > > > > > name, > > > > > > but I always get the value Nothing in return. > > > > > > > > > > > > > > > Make sure you fully qualify the type name correctly. You can > > determine > > > a > > > > > type's full name by using 'GetType(<type name>).FullName'. > > > > > > > > > > -- > > > > > M S Herfried K. Wagner > > > > > M V P <URL:http://dotnet.mvps.org/> > > > > > V B <URL:http://classicvb.org/petition/> > > > > > > > > > > > > > > > > > > > > > > > > > |
|||||||||||||||||||||||