Может ли генератор исходного кода генерировать методы с анонимными типами в качестве параметров? ⇐ C#
Может ли генератор исходного кода генерировать методы с анонимными типами в качестве параметров?
Может ли генератор исходного кода сканировать сборку на предмет используемых анонимных типов и генерировать методы расширения специально для этих типов?
Например, у вас есть следующий код
var anon = new { Test = 123;} анон.SomeExtensionMethod(); // SomeExtensionMethod (пока) не существует Можно ли использовать генератор исходного кода для создания SomeExtensionMethod?
Я попробовал. Информация об имени и типе анонимного типа доступна при запуске генераторов исходного кода. Однако их имя содержит символы, недопустимые в коде, созданном не компилятором, поэтому моя попытка привела к чему-то вроде
публичный статический класс SourceGeneratedCode { public static void SomeExtensionMethod(this global:: value) { } } Что, конечно, не скомпилируется. Вот мне и интересно, можно ли как-нибудь это сделать?
Мне хотелось бы создать разные реализации этого метода для разных анонимных типов; это означает, что SomeExtensionMethod не может просто принимать object или быть универсальным или что-то в этом роде.
Может ли генератор исходного кода сканировать сборку на предмет используемых анонимных типов и генерировать методы расширения специально для этих типов?
Например, у вас есть следующий код
var anon = new { Test = 123;} анон.SomeExtensionMethod(); // SomeExtensionMethod (пока) не существует Можно ли использовать генератор исходного кода для создания SomeExtensionMethod?
Я попробовал. Информация об имени и типе анонимного типа доступна при запуске генераторов исходного кода. Однако их имя содержит символы, недопустимые в коде, созданном не компилятором, поэтому моя попытка привела к чему-то вроде
публичный статический класс SourceGeneratedCode { public static void SomeExtensionMethod(this global:: value) { } } Что, конечно, не скомпилируется. Вот мне и интересно, можно ли как-нибудь это сделать?
Мне хотелось бы создать разные реализации этого метода для разных анонимных типов; это означает, что SomeExtensionMethod не может просто принимать object или быть универсальным или что-то в этом роде.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение