Сопоставление match типа System.Type
От: CodingUnit Россия  
Дата: 29.01.10 12:16
Оценка:
Здравствуйте, хотел обратиться за помощью разьяснить мне возможности конструкции 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.