Проверка MSIL не имеет отношения к встраиванию, поскольку это выполняется JIT - вторая фаза компиляции для кода .NET.
MSIL по-прежнему содержит общий код, который не знать с какими типами он будет использоваться.Вот почему .NET-шаблоны могут работать с единицами компиляции.
Похоже, это вовсе не должен быть универсальный код, а две перегрузки с одинаковым именем метода:
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void EmptyMethod(childType inputVariable)
{
// do something
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void EmptyMethod(anotherChildType inputVariable)
{
// do other things
}
Если вы обнаруживаете, что выполняете проверки типов внутри своего общего кода, это, как правило, признак того, что вы выбрали не тот инструмент для этой работы.