C # простой тип с общим типом - PullRequest
0 голосов
/ 04 октября 2018

Я хочу делать разные вещи с универсальным типом, учитывая, что это байтовый массив, int и т. Д.

    public void GenericType<T>(T Input)
    {
        switch (typeof(T))
        {
            case (typeof(byte[])):
                break;
            case (typeof(int)):
            case (typeof(float)):
            case (typeof(long)):
                break;
            case (typeof(string)):
                break;
            default:
                throw new Exception("Type Incompatability Error");
                break;
        }
    }

Sandbox.cs(12,13): error CS0151: A switch expression of type `System.Type' cannot be converted to an integral type, bool, char, string, enum or nullable type

add:

В моем конкретном случае есть некоторый код, которыйобщий и некоторый код, который является конкретным.У меня также есть один, где я на самом деле не передаю переменную T.Пока что решения работают, если есть переменная.

    public void GenericType<T>()

Не слишком опытный, какова лучшая практика в C #?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете сделать это с помощью switch, используя сопоставление с образцом :

switch(Input)
{
   case int i:
      // do something with i
   case string x:
      // do something with x
}
0 голосов
/ 04 октября 2018

Вы можете попробовать что-то вроде

if (Input is int i) { DoSomething(i) ; }
else if (Input is long l) { DoSomething(l) ; }

Лучше всего?Может быть.Работает?Да.

В этом примере вы фактически вызываете System.Object GenericType.

...