2014-11-19 2 views
2

Я пытаюсь получить доступ к .Net (C#) перечислений в IronPython, позволяет сказать, что мы имеемДоступ к .Net перечислений в железном питона

test.dll

// Contains Several Enums 
enum TestType{..} 
enum TestQuality{..} 
.... 
.... 
enum TestStatus{..} 

//Similarly Multiple functions 
public void StartTest(TestType testType, TestQuality testQuality){..} 
.... 
.... 
public TestStatus GetTestStatus(){..} 

и теперь, если я попытаюсь для вызова указанных выше функций, мне нужно выбрать соответствующие параметры перечислений и до сих пор, что я сделал это,

Iron Python [vs2012]

import clr 
clr.AddReference('Test.dll') 
from TestDll import * 

test = Test() 
# Initiate Enums 
enumTestType = TestType 
enumTestQuality = TestQuality 
.... 
.... 
enumTestStatus = TestStatus 

#Call Functions 
test.StartTest(enumTestType.Basic, enumTestQuality.High) 
.... 
.... 
# goes on 

В настоящее время вышеуказанный код IronPython работает нормально, единственный нечетный бит здесь заключается в том, что мне нужно инициировать все перечисления (Intellisence не работает здесь), прежде чем использовать их с функциями, это станет более трудным, когда есть больше перечислений для использования. тогда как в среде C# (vs2012) нам не нужно начинать, но мы можем использовать их сразу при вызове функций.

Есть ли лучший способ справиться с этим в IronPython?

Пожалуйста, исправьте меня, если я ошибаюсь, спасибо!

+0

Я знаю, что вы должны импортировать и создавать экземпляры всех перечислений, которые вы используете. Пока вы импортируете все, все выглядит хорошо для меня. Я не знаю обходного пути для этого. –

+0

Импортный и Intantiating .net класс в порядке, но почему это члены (перечисления)? – SanVEE

ответ

2

Предполагая перечисления содержится в вашем Test классе вы можете либо использовать их полный

test.StartTest(Test.TestType.Basic, Test.TestQuality.High) 

или импортируя

from TestDll.Test import TestQuality, TestType 
test.StartTest(TestType.Basic, TestQuality.High) 

Если перечисления находятся в том же пространстве имен, что Test класса они должны использоваться без дополнительного импорта:

test.StartTest(TestType.Basic, TestQuality.High) 
+0

Еще раз спасибо, Саймон, отлично! Я думал, что это «из TestDll import *» будет исправлено, но не. – SanVEE

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