Мой C# код использует сторонние библиотеки, написанные на C++ и с использованием Swig, чтобы обернуть его в C# (три проекта здесь, MyCodeCS, ThirdCpp и ThirdCs)Swig TypeMap внутренний конструктор защищаемого
Таким образом, если У меня есть класс Acpp с общедоступными конструкторами Acpp()
и Acpp(int)
в cpp, я заканчиваю в завернутой версии C# с классом Acs, правильно определенными конструкторами Acs()
и Acs(int)
(пока что так хорошо), причем оба из них используют внутреннюю, конструктор: Acs(IntPtr cPtr,bool)
.
(Конечно, как касты и классы CS названы A, но для ясности я назвал их с СРР и ц.п. суффиксами)
Теперь я интегрирующий модулем нового CPP (MyCodeCpp), который содержит класс Bcpp, который наследуется от Acpp. Пока что так хорошо: Bcpp наследует от Acpp, и я могу назвать его с моего кода на C# без проблем, используя его .
Моя проблема заключается в том, что для того, чтобы объекты Bcs распознавались как Acs, мне нужно определить такой класс Bcs. Который является довольно тупой один, так как я уже получил CPTR:
public class Bcs : Acs
{
public Bcs(IntPtr cptr): base(cptr,true){}
}
Дело в том, ... Acs(IntPtr,bool)
является внутренним, что означает, что если я хочу сделать, что мне нужно либо:
- добавьте Bcs в проект ThirdCS и перестройте thirdCS, что я и делаю прямо сейчас, и который отлично работает, но не нравится моему главному архитектору, потому что теперь у нас есть класс, который должен принадлежать MyCodeCS, как оболочка для класса MyCodeCpp, который на самом деле принадлежит третьим лицам
- как-то модифицировать поведение swig IOR, так что
Acs(IntPtr,bool)
защищен внутренней вместо внутренней, поэтому его можно назвать по MyCodeCS основе BCS класса
Дело в том: я понятия не имею, как это сделать, или даже, если это возможно?
Большое спасибо
Вы можете показать примеры .i файлы? – AndyG
Хотя я уверен, что ваш вопрос имеет простое решение, очень сложно понять основную проблему только с помощью слов. Можете ли вы показать * минимальный * полный пример, все, что мне нужно, чтобы попробовать его в моей среде разработчиков? Я даже не могу убедить себя, что вы на самом деле пытаетесь решить правильную проблему. – Flexo