2013-04-18 75 views
3

我寫在C#中的圖書館,它是這樣的Python看到屬性作爲功能

class FooCollection 
    { 
     private readonly FooBase _innerFoo; 
     public FooCollection() 
     { 
      _innerFoo = new FooBase(); 
     } 

     public string this[int index] 
     { 
      get { return _innerFoo._components[index].ComponentName; } 
      set 
      { 
       _innerFoo._components[index].ComponentName = value; 
      } 
     } 
    } 

而且這個類是COM可見,我試圖從Python中使用它。 所以,儘管這個命令

foo(1) 

但是這一次不

foo(1) = 'SomeName' 

它給我「不能分配調用函數」。我嘗試了方括號[],但這並不好。 有沒有什麼辦法可以繞過這個,除了我在C#中額外的'正常'方法來設置這個屬性?

我在Python中使用pywin32-218的COM。

foo = win32com.client.Dispatch("Foo") 

回答

1

索引屬性轉化爲IL,像

FooCollection.get_ItemFooCollection.set_Item,使probabbly在翻譯過最終COM對象 。

嘗試使用這些函數調用。

希望這會有所幫助。

+0

就是這樣的。這是'設置'沒有下劃線。我在Matlab中遇到了同樣的問題,我必須使用'.set('PropertyName',index,value)'。非常感謝你! – gajo357

+0

@beginner_developer:不客氣。 – Tigran