Стандартная функция с параметром without <T>
------------------------------
Вопрос 1:
Я работаю с функциями системной библиотеки, которые должны быть стандартными для случаев, когда у меня есть общие параметры типа "T", и для случаев, когда у меня нет "T", но есть переменная.
Я обнаружил, что для каждой функции, которую я выполняю, я должен выполнить две инициализирующие функции, которые в конечном итоге передают систему.Введите параметр для конечной функции, которая стандартизирует.
Чтобы не нужно было этого делать, мне нужно было бы что-то вроде того, что появляется в "MyFunction_Alternative". но:
- Это неверно: система.Тип Source_Type = (T! = Null)? Т: MyVariable.метод GetType ();
- Это недопустимо: <t?>.
Я хотел бы видеть <T> Обнуляемым, потому что это решило бы проблему.
------------------------------
// Function to Employ when I have a Variable but I don't have <T>. public static void Function_NoT_Ini(dynamic MyVariable) { System.Type Origen_Type = MyVariable.GetType(); MyFunction_(Origen_Type); } // Function to Employ when I have <T>. public static void Function_T_Ini<T>() { System.Type Origen_Type = typeof(T); MyFunction_(Origen_Type); } // Standard Final Function. private static void MyFunction_(System.Type Origen_Type) { System.Console.WriteLine("The values of the Enum are:"); foreach (int MyEnum_Value in System.Enum.GetValues(Origen_Type)) { System.Console.WriteLine(MyEnum_Value); } } // Alternative Final Function. It's not valid. It is also not valid <T?>. private static void MyFunction_Alternative<T>(dynamic MyVariable) { System.Type Origen_Type = (T != null) ? T : MyVariable.GetType(); System.Console.WriteLine("The values of the Enum are:"); foreach (int MyEnum_Value in System.Enum.GetValues(Origen_Type)) { System.Console.WriteLine(MyEnum_Value); } }
------------------------------
Вопрос 2:
У меня есть проблема функций, в которых мне нужно делать приведение, когда у меня нет <T>.
Это правильная система?
------------------------------
public static void MyFunction_Cast<T>(dynamic MyVariable) { dynamic MyValue = 10; // Cast with <T>. T MyCast_Variable = (T)MyValue; // Cast without <T>. System.Type Origen_Type = MyVariable.GetType(); // It is not valid. dynamic My_Second_Variable_of_MyVariable_Type = (Origen_Type)MyValue; // It is valid, but is it the right system? dynamic My_Second_Variable_of_MyVariable_Type = System.Activator.CreateInstance(Origen_Type); // For example, if the type is an enumeration, it would convert the value 10 to Enumeration.MyValue10 (Not sure) My_Second_Variable_of_MyVariable_Type_ = MyValue; }
Что я уже пробовал:
на всех сайтах компании internet.in все сайты Интернета.