Нет, вы не можете. Это можно проверить экспериментально, скомпилировав следующий код
public static class Example {
public static int Test(this int? source) {
return 42;
}
public void Main() {
int v1 = 42;
v1.Test(); // Does not compile
}
}
Вам нужно будет написать метод расширения для каждого типа (обнуляемый и не обнуляемый), если вы хотите, чтобы он использовался для обоих типов.