2010-08-02 4 views
3

Надеюсь загрузить .net dll в ironpython.Могу ли я использовать именованные и необязательные аргументы в ironpython

Но одна из статических функций в .net dll имеет некоторые Именованные и необязательные аргументы.

как, Draw (вес: вес, высота: ч, площадь = 1)

Только я могу использовать все аргументы в пользу?

ответ

5

Именованные и дополнительные параметры полностью поддерживаются. .NET долгое время поддерживал поддержку VB.NET, и поэтому IronPython поддерживал такой же способ сделать это с самого начала. Новый синтаксис C# сопоставляется с теми же базовыми метаданными, что и старая поддержка VB.

Для вызова вы используете f (x = 42), который является синтаксисом имени именованного параметра Python. Для дополнительных параметров вы можете просто оставить их. В примере вашего примера вы можете сделать Draw (вес, высота) и оставить Area out. Или вы можете вызывать вес/вес и высоту в качестве названных параметров и оставлять область вне.

Основные метаданные .NET, которые IronPython ищет, это либо атрибут OptionalAttribute, либо DefaultParameterValueAttribute. Для необязательно мы передаем значение по умолчанию (T), если только этот тип не является объектом, и в этом случае мы передаем Missing.Value. Обычно это соответствует тому, как отражения называет эти API.

-1

Как утверждает this SO question, новые именованные аргументы .NET не поддерживаются в IronPython (который использует именованные аргументы для конструкторов, которые он вызывает для установки свойств вместо этого).

Для факультативных, так как this post говорит,

для дополнительных параметров, как аргументов Адреса индексатора, вы можете использовать Missing.Value использовать по умолчанию.

после, конечно from System.Reflection import Missing.

Смежные вопросы