3

我有一个用 C# 编写的库,它是这样的

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")
4

1 回答 1

1

索引属性转换为IL,如

FooCollection.get_ItemFooCollection.set_Item,所以很可能在最终的 COM 对象中也被翻译了。

尝试使用这些函数调用。

希望这可以帮助。

于 2013-04-18T11:32:55.743 回答