Как проверить, является ли универсальный параметр динамическим в .NET 4.0 - PullRequest
11 голосов
/ 19 июля 2010

У меня есть класс ObjectMapper<T>. Есть ли способ в .NET 4.0, чтобы сказать, если typeof(T) является dynamic? Я хочу иметь возможность определить внутри метода члена, был ли класс инициализирован как new ObjectMapper<dynamic>() против new ObjectMapper<SomeConcreteClass>().

Ответы [ 2 ]

10 голосов
/ 19 июля 2010

Тип CLR с именем dynamic отсутствует. Компилятор C # создает все динамические значения типа object и затем вызывает пользовательский код привязки, чтобы выяснить, как с ними обращаться. Если dynamic был использован, он будет отображаться как Object.

4 голосов
/ 19 июля 2010

Вы делаете это, проверяя, имеет ли экземпляр тип IDynamicMetaObjectProvider, или вы можете проверить, реализует ли тип IDynamicMetaObjectProvider.

...