Home All Groups Group Topic Archive Search About

How to get Enum type using Enum name?

Author
5 Apr 2005 9:12 PM
Don
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

Author
5 Apr 2005 9:27 PM
steve
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
|
|
Author
5 Apr 2005 9:31 PM
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
> |
> |
>
>
Author
5 Apr 2005 10:04 PM
steve
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
| > |
| > |
| >
| >
|
|
Author
6 Apr 2005 1:21 PM
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
> | > |
> | > |
> | >
> | >
> |
> |
>
>
Author
6 Apr 2005 6:19 PM
steve
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
| > | > |
| > | > |
| > | >
| > | >
| > |
| > |
| >
| >
|
|
Author
8 Apr 2005 3:13 PM
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
> | > | > |
> | > | > |
> | > | >
> | > | >
> | > |
> | > |
> | >
> | >
> |
> |
>
>
Author
5 Apr 2005 10:08 PM
steve
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
| > |
| > |
| >
| >
|
|
Author
5 Apr 2005 9:52 PM
Herfried K. Wagner [MVP]
Show quote Hide quote
"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/>
Author
6 Apr 2005 1:26 PM
Don
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/>
>
Author
6 Apr 2005 1:35 PM
Don
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/>
> >
>
>
Author
6 Apr 2005 1:38 PM
Don
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/>
> > >
> >
> >
>
>
Author
6 Apr 2005 1:46 PM
Don
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/>
> > > >
> > >
> > >
> >
> >
>
>
Author
6 Apr 2005 2:07 PM
Don
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/>
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>