Я думаю, что это был просто плохой дизайн оригинальной объектной модели Word. Я знаю, что передача строк по ссылке может быть немного быстрее в мире COM, потому что это избавляет от необходимости делать копию, так что, возможно, это было частью оправдания. Но недостатком является то, что вызываемый может изменять значение, и в большинстве случаев с Word они являются входными параметрами.
Я думаю, что ваша техника - лучшая практика. Для миллионов необязательных параметров, которые требуются многим методам объектной модели Word, можно создать одно статическое поле, «пропускающее» что-то вроде:
объект отсутствует = Type.Missing;
// Пример
объект fileName = ...
document.SaveAs (ref fileName, ссылка отсутствует, ссылка отсутствует, ссылка отсутствует,
ссылка отсутствует, ссылка отсутствует, ссылка отсутствует, ссылка отсутствует, ссылка отсутствует,
ссылка отсутствует, ссылка отсутствует, ссылка отсутствует, ссылка отсутствует, ссылка отсутствует,
ссылка отсутствует, ссылка отсутствует);