Мой вопрос очень похож на: Cast to type known only at runtime, однако на него не ответил (он также находится на C, а не на C#).Создайте переменную типа, известного только во время выполнения (C#)
Я пишу что-то для управления некоторым оборудованием, и в зависимости от данной конфигурации оборудования мне нужно выполнить некоторую побитную арифметику с типом «байт» или «UInt32». Битовый арифметический код длинный, но идентичный в 32-битном и 8-битном случае, с той лишь разницей, что длина определенных петель (32 или 8).
Мое настоящее решение заключается в использовании переключателя, что означает, что у меня есть почти две копии одного и того же кода в гигантском выражении if.
Альтернативным решением является использование массива или 0s и 1s, а не UInt32 или байт для выполнения побитовых операций, а затем преобразования в UInt32 или байт в конце.
Последнее решение, которое меня больше всего интересует, заключается в том, чтобы динамически выбирать, какой тип я буду использовать во время выполнения. Вот некоторые псевдокоды для того, что я хотел бы:
System.Type MyType;
if (something)
MyType=type1;
else
MyType=somethingElse;
myType someVariable; //Create a variable of type myType. This line will give an
//error
someVariable=(myType) otherVariable //do an example typecast with the
//runtime-determined type
Я искал вокруг, чтобы знать, что ответ может иметь что-то делать с обобщениями и отражением, но я не могу понять, как сделать это точно.
Как только вы создали значение, что вы собираетесь с ним делать? Как вы собираетесь делать на нем арифметические операции? –
Что вы планируете делать с помощью someVariable? Поскольку неизвестно, какой тип это будет до выполнения, вам будет сложно писать код против него. Специфика того, что вам нужно сделать с этим, будет определять, как заставить систему типов хорошо играть ... –
Если единственное различие - это количество циклов, почему бы просто не понять это? for (int i = 0; i <(byteConfig? 8: 32); i ++)? –