Присвоить var as myType по имени поля из myType

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

vick2312
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 17.10.2008 (Пт) 17:43

Присвоить var as myType по имени поля из myType

Сообщение vick2312 » 24.10.2008 (Пт) 13:52

Определено некоторое перечисление, скажем, myType, есть переменная этого типа, есть некая строка , значение которой точно совпадает с именем элемента перечисления. Задача: присвоить переменной типа myType значение, соответствующее строке.
Вобщем, нужно сделать что-то типа:
Код: Выделить всё
Public Enum myType
                t1=1
                t2=2
                t3=3
         End Enum

Private var as myType

Public Property Mean() As String
        Get
            Return var.ToString
        End Get
        Set(ByVal value As String)
            var=(как-то преобразовать?) value
        End Set
    End Property

Тогда при присвоении из вне свойству Mean значения, скажем, "t2", переменной var должно присвоится значение 2, или, что одно и то же по-сути, myType.t2.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Присвоить var as myType по имени поля из myType

Сообщение Viper » 24.10.2008 (Пт) 14:04

1. А зачем такое нужно?
2. Реализация сего возможна через преобразование String -> myType
ADD:
Вариант реализации:
Код: Выделить всё
Public Enum MyType
    t1 = 1
    t2 = 2
    t3 = 3
End Enum
Sub Main()
    Dim pDict As New Dictionary(Of String, MyType)
    pDict.Add("t1", MyType.t1)
    pDict.Add("t2", MyType.t2)
    pDict.Add("t3", MyType.t3)
    Console.WriteLine(pDict.Item("t1"))
    Console.WriteLine(pDict.Item("t3"))
    Console.WriteLine(pDict.Item("t2"))
    Console.Read()
End Sub
Весь мир матрица, а мы в нем потоки байтов!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Присвоить var as myType по имени поля из myType

Сообщение Sebas » 24.10.2008 (Пт) 15:11

Public Shared Function Parse(ByVal enumType As System.Type, ByVal value As String) As Object
Member of: System.Enum
Summary:
Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object.

Parameters:
enumType: The System.Type of the enumeration.
value: A string containing the name or value to convert.

Return Values:
An object of type enumType whose value is represented by value.

Exceptions:
System.ArgumentNullException: enumType or value is null.
System.ArgumentException: enumType is not an System.Enum. -or- value is either an empty string or only contains white space. -or- value is a name, but not one of the named constants defined for the enumeration.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Присвоить var as myType по имени поля из myType

Сообщение Viper » 24.10.2008 (Пт) 15:20

Sebas, не знал про такую штуку. Тогда вопрос автора решается примерно так:
Код: Выделить всё
Console.WriteLine(CType(System.Enum.Parse(GetType(MyType), "t3"), MyType))
Весь мир матрица, а мы в нем потоки байтов!

vick2312
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 17.10.2008 (Пт) 17:43

Re: Присвоить var as myType по имени поля из myType

Сообщение vick2312 » 25.10.2008 (Сб) 9:05

Это всё прекрасно, так я тоже хотел, но функция GetType почему-то не возврвщает ничего, а именно, функция Parse выбрасывает исключение - параметр enum type не может быть неопределёным.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Присвоить var as myType по имени поля из myType

Сообщение Viper » 25.10.2008 (Сб) 10:06

vick2312 писал(а):Это всё прекрасно, так я тоже хотел, но функция GetType почему-то не возврвщает ничего, а именно, функция Parse выбрасывает исключение - параметр enum type не может быть неопределёным.
Показывай пример, у меня все работает нормально.
Весь мир матрица, а мы в нем потоки байтов!

vick2312
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 17.10.2008 (Пт) 17:43

Re: Присвоить var as myType по имени поля из myType

Сообщение vick2312 » 25.10.2008 (Сб) 18:08

Прошу меня извинить за невнимательность. Я нашёл свою ошибку - вместо использования, я так понял, собственного ключевого слова среды VB, а именно GetType, я использовал метод из System.Type:
Код: Выделить всё
var_ = CType(System.Enum.Parse(System.Type.GetType("Class1.myType"), value), Class1.myType)

который и вызывал, упомянутое исключение.
Вобщем, примите мою благодарность! :oops:


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 99

    TopList