Здравствуйте, хотел обратиться за помощью разьяснить мне возможности конструкции match в сопоставлении типов, имеется задача, что получается тип Type при отражении типа свойства и далее надо для разных типов произвести отдельные действия, конечный объект свойства при этом еще не существует, если писать так, то компилятор выдает ошибку "invalid pattern":
def CheckType(t : Type)
{
| typeof(bool) => ...
| typeof(byte) => ...
| typeof(int) => ...
}
Сопоставление с конкретным типом не имеет смысла, потому что Type это не bool
{
| bool => // ошибка
}
и все другие варианты is, as не дают положительного результата, единственно что получилось это с помощью нескольких выражений if else сделать что нужно, при этом код выглядит нагруженно и не дает сравнить Type с Type ругаясь на сравнение ссылок и необходимо делать приведение Type к object, чтобы все заработало. Вопрос следующий возможно ли в текущем синтаксисе производить сопоставление типа Type, определяя тип, если нет то можно ли ввести такую возможность в синтаксис (посредством макросов или еще как то), так как такая задача встречается часто при отражении, в C# очень смущают конструкции типа
object obj;
if (obj is Customer)
{
Customer cust=obj as Customer;
... действия на экземпляре Customer
}
if (obj is AnotherCustomer)
{
AnotherCustomer cust=obj as AnotherCustomer;
...
}
хотелось бы от них отказаться в пользу удобного синтаксиса, что и привело меня к Nemerle.