В C#, как я могу оценить, содержат ли какие-либо члены класса ключ переключения или если else строит? Я хочу проверить модульный тест, если класс был написан либо с switch...case
, либо с цепью if....else
.В C#, как я могу оценить, содержат ли какие-либо члены класса ключ switch или если else строит?
Я знаю, как получить членов класса с использованием отражения, но не могу найти пример на interwebs того, как получить фактический код. От this SO post Я нашел, что вы можете использовать MethodBase.GetMethodBody()
, here. Это кажется хорошим для возврата MethodBody для получения переменных, но не может найти, как получить информацию о том, существует ли switch...case
или if...else
.
Доступны любые решения?
ли вы видите [ 'MethodBody.GetILAsByteArray()' Метод] (https://msdn.microsoft.com /en-us/library/system.reflection.methodbody.getilasbytearray.aspx)? –
Вы ищете * любой * поток управления или только эти две конструкции конкретно? К тому времени, когда он был скомпилирован в IL, эти конструкции больше не существуют. Поэтому, если вы хотите настроить таргетинг только на те конструкции, вы будете пытаться перепроектировать из IL. –
@RowlandShaw - Я просмотрел его, поскольку я не был уверен, как это поможет. Я предполагаю, что там будет какой-то конкретный ИЛ, который я могу найти. Я исправлю, что и «switch ... case», и «if ... else» скомпилированы с одинаковыми инструкциями IL? – Dib