Nano Hash - криптовалюты, майнинг, программирование

Vb.net Call Class1.enum

Здравствуйте и простите меня за мой очень плохой английский язык в первую очередь...

Я не привык работать со структурами или перечислениями...

У меня много классов в моем проекте, и я пытаюсь организовать.

Мой класс Duree будет содержать несколько перечислений или структур.

Я хотел бы иметь возможность вызывать разные перечисления или структуры.

И постройте запрос на связанной структуре.

RepairList.vb

Public Class RepairList

    Dim Tool As New Tools
    Dim uuu As String = Tool.Find("C:\Data\1\" & Form1.TextBox2.Text & ".txt", "ProductType")
    ' Now uuu contains iPhone7,2
    uuu = uuu.Replace(",", "")
    uuu = uuu.Replace("i", "I")
    uuu = uuu.Replace(" ", "")
    uuu = uuu.Replace("P", "p")
    ' Now uuu contain Iphone72
    Dim p As Devices.Device  ' Class Devices  --> Structure --> Device
    Dim info As Reflection.FieldInfo = p.GetType().GetField(uuu)
    Dim az As Object = info.GetValue(p)
    ' Now az contains Iphone 6
    Dim toto As Object
    toto = az
    toto = toto.Replace(" ", "")
    ' Now toto contain Iphone6 the Name of the enum i woul catch in Duree
    Dim test As String = myCheckbox.Name   ' now test contains AntenneWifi
    Dim value As Integer
    value = CInt([Enum].Parse(GetType(Duree.Iphone6), test))

 End Class

Устройства.vb

 Public Class Devices

 Public Structure Device

    Const Iphone41 = "Iphone 4S"
    Const Iphone51 = "Iphone 5"
    Const Iphone52 = "Iphone 5"
    Const Iphone53 = "Iphone 5C"
    Const Iphone54 = "Iphone 5C"
    Const Iphone61 = "Ihpone 5S"
    Const Iphone62 = "Iphone 5S"
    Const Iphone71 = "Iphone 6 Plus"
    Const Iphone72 = "Iphone 6"
    Const Iphone81 = "Iphone 6S"
    Const Iphone82 = "Iphone 6S Plus"
    Const Iphone84 = "Iphone SE"
    Const Iphone91 = "Iphone 7"
    Const Iphone92 = "Iphone 7 Plus"
    Const Iphone93 = "Iphone 7"
    Const Iphone94 = "Iphone 7 Plus"
End Structure

End Class

Duree.vb

Public Class Duree

Public Enum Iphone5
    'Define the Repair Time For each action.
    AntenneWifi = 35
    Batterie = 15
    BtnVolDown = 45
    BtnVolUp = 45
    BtnHome = 20
    BtnPower = 35
    CableWifiBth = 35
    CamAr = 30
    MotherBoard = 30
    FullScreen = 20
    ScreenOnly = 40
    HPExt = 35
    HPInt = 25
    SimLevier = 35
    NappeHomeLong = 30
    NappeBtnPower = 45
    NappeFacetime = 30
    NappeVolVibr = 40
    PlaqueProtectLCD = 30
    PriseJack = 40
    SimTray = 2
    Vibreur = 25
End Enum

Public Enum Iphone6
    'Define the Repair Time For each action.
    AntenneWifi = 35
    Batterie = 15
    BtnVolDown = 45
    BtnVolUp = 45
    BtnHome = 20
    BtnPower = 35
    CableWifiBth = 35
    CamAr = 30
    MotherBoard = 30
    FullScreen = 20
    ScreenOnly = 40
    HPExt = 35
    HPInt = 25
    SimLevier = 35
    NappeHomeLong = 30
    NappeBtnPower = 45
    NappeFacetime = 30
    NappeVolVibr = 40
    PlaqueProtectLCD = 30
    PriseJack = 40
    SimTray = 2
    Vibreur = 25
End Enum
End Class

Я поместил здесь только 2 перечисления, но у меня есть больше в классе Duree

Итак, в RepairList.vb я бы заменил Duree.Iphone6 в следующей строке

 value = CInt([Enum].Parse(GetType(Durée.Iphone6), test))

Что-то вроде

value = CInt([Enum].Parse[GetType("Duree+" & toto), test))

Но я не могу найти правильный синтаксис.

Вот обзор того, что я смотрел раньше

Перечисления и интерфейсы

Найдите строку в Enum и верните Enum

и много других ..

Большое спасибо, если вы можете мне помочь

16.07.2017

  • Я действительно не понимаю, что вы пытаетесь здесь. Вы получаете из переменной в виде строки имя перечисления, а затем пытаетесь установить целое число, связанное со значением перечисления, или что вы пытаетесь сделать? 16.07.2017
  • Извините, я должен отредактировать основной пост, чтобы попытаться быть более точным. 16.07.2017
  • Я думаю, он хотел найти Enum на основе строки. Кстати, зачем тебе это? Enum - лучший способ предотвратить любую опечатку, если вашей программе нужен выбор... 16.07.2017
  • Да, вроде то, что мне нужно, но в другом классе. Я не нахожу, как построить запрос к Durée 16.07.2017
  • Ваш вопрос не имеет никакого смысла. Я не знаю, то ли это язык, то ли неопытность, но это не имеет смысла. 16.07.2017
  • Если я посмотрю на название класса Durée, эта буква é покажется мне неопытной... но все когда-то были новичками. Написал ответ, но я не знаю, то ли это то, что он ищет... 16.07.2017
  • Хорошо, в моем коде у меня нет é, но я точно новичок... 16.07.2017

Ответы:


1

Итак, хотя я уверен, что то, что вы делаете, - не лучший подход, что бы вы ни пытались сделать, вот способ получить то, что вы ищете:

Dim a As Assembly = GetType(Duree).Assembly
Dim t As Type = a.GetType("YOUR_PROJECT_NAME.Duree+" & toto)

Если Duree является частью пространства имен, тогда строка становится "YOUR_PROJECT_NAME.NAMESPACE.Duree+" & toto.

Теперь t содержит тип перечисления, называемого как текст строки toto (если она есть, если нет, то будет Nothing).

Может быть, есть лучший способ добиться этого, но я его не знаю, так как он мне никогда не был нужен. Может быть, если вы объясните немного лучше, что вы пытаетесь сделать, мы сможем помочь с дизайном, так что вам не нужно что-то вроде этого, так как это не имеет большого смысла, и это не способ работы с перечислениями.

PD: Не используйте специальные символы для имен. Пишите Дюри, а не Дюри.

16.07.2017
  • Спасибо, что нашли время для ответа. Но на данный момент это все еще пусто. 16.07.2017

  • 2

    Вместо того, чтобы пытаться кодировать эту информацию в системе типов с помощью перечислений и констант, я думаю, вы обнаружите, что она работает лучше, если вы поместите ее в таблицы базы данных, которые вы можете загрузить при запуске приложения, возможно, в Dictionary объекты. Как только вы это сделаете, вы сможете упростить уродливый код отражения в простой поиск, а также значительно упростить себе жизнь по мере выпуска новых телефонных устройств.

    16.07.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..