Я не думаю, что вы можете сделать то, что вы просите, я посмотрел в прошлое и оказался пустым. Проблема в том, что даже в вашем примере использования .Add
вам все еще нужно преобразовать параметр movement
в Point Type
, чтобы получить доступ к этому методу. Это, я считаю, является ограничением C #, если я ошибаюсь, я был бы очень рад узнать об этом.
Я хотел бы предложить следующее: если вы знаете , вы всегда собираетесь получить Point Type
в MoveOf
, тогда было бы безопасно всегда приводить его к Point
внутри метода, однако, если это так, то вы должны принять Point
в качестве параметра.
Единственное, что я могу сказать, это то, что если вы изначально создаете Point Type
и передаете его в MoveOf
, вы можете проверить тип movement
внутри MoveOf
перед его наложением. Проблема здесь, конечно, в том, что вам в конечном итоге придется сделать это для всех типов, которые наследуются от IPoint
, и использовать метод MoveOf
.