У меня есть API, который я должен предоставить более высокоуровневому, более дружественному, более обтекаемому фреймворку путем обертывания.
Этот API уже упакован идентично своей неуправляемой версии. Но в нем есть все виды неинтуитивных имен членов, рабочих процессов и т. Д.
Я использую состав для хранения ссылки на базовый тип таким образом, чтобы я мог иметь члены так, как хочу. Основное преобразование и объединение определенных функций в свойства, использование функциональности более высокого уровня с использованием некоторой другой логики более низкого уровня и т. Д.
public class Effect
{
public IEffect {get; private set;}
...
}
Но я начинаю думать о том, что, поскольку исходный API C ++ в значительной степени основан на наследовании и виртуальных методах, как мне следует «разоблачить» / обернуть / связать их?
Должен ли я просто предоставить дополнительные методы, которые вызывают internalType.VirtualMethod()
и т. Д.? Но похоже, что это не сработает, верно?
Но, с другой стороны, если я использую Inheritance сам как:
public class Effect : IEffect
тогда у меня будут все эти члены и странные, мрачные функции, идущие с ним. Я все еще могу предоставить свою функциональность более высокого уровня, но я не хочу показывать этих участников по многим причинам, одной из самых простых из которых является то, что они не похожи на .NET.
Что вы предлагаете для этого?