Не лучше ли для этого не использовать динамические типы, и пусть ваш класс реализует интерфейс.Затем вы можете проверить во время выполнения, реализует ли объект этот интерфейс и, следовательно, имеет ожидаемый метод (или свойство).
public interface IMyInterface
{
void Somemethod();
}
IMyInterface x = anyObject as IMyInterface;
if( x != null )
{
x.Somemethod();
}
Я думаю, что это единственный правильный путь.
То, на что вы ссылаетесь - это утка, которая полезна в сценариях, когда вы уже знаете, что у объекта есть метод, но компилятор не может проверить это.Это полезно, например, в сценариях взаимодействия COM.(отметьте эту статью)
Если вы хотите, например, совместить типизацию утки с отражением, то я думаю, что вам не хватает цели типизации утки.