Применить класс атрибута к классу Python, который наследует базовый класс C # - PullRequest
1 голос
/ 09 августа 2011

У меня есть базовый класс в C #, который выглядит так

   Class A
   {
     public ClassA()
     { 

     }

     .....
   }

В Python я наследую этот базовый класс

import clr
clr.AddReferenceToFile("MyClass.dll")
from MyNamespace import ClassA    

class MySubclass(ClassA):
    def _init_(self):
        print "I'm in a subclass in python"

У меня также есть класс атрибута в C #, который называется MyAttrib("Value")

Где-то позже в моем коде на C # я проверяю, что к любым классам, производным от ClassA, применен атрибут MyAttrib, к которому не применяется класс Python.

Есть ли способ сделать одно из следующих действий:

  1. Применить класс attrib к производному классу в Python?
  2. Установить AttributeValue в Python как-нибудь, когда создается объект?
  3. Какой-то другой способ сделать то, о чем я думаю

Я использую IronPython с плагинами для Visual studio.

1 Ответ

0 голосов
/ 09 августа 2011

Я не думаю, что есть простой способ сделать это.Определенно проще использовать класс заглушки C # с определенными необходимыми атрибутами и его подклассом.

Но если вам действительно необходимо определить такой класс в Python, вы можете использовать обходной путь (как показано здесь )

По сути, вы можете скомпилировать (в памяти) фрагмент кода C # и импортировать его в IronPython.Учитывая, что это кусок кода на C #, вы можете добавлять атрибуты, и, следовательно, ваша проблема решена.

Это, конечно, довольно запутанно, потому что вы в основном встраиваете язык в другой, создавая цепочку, подобную этой: C# <- IronPython <- C#, тогдаИ снова я настоятельно рекомендую вам определить класс C #, уже имеющий необходимые атрибуты, и использовать его.

...