Используя Наследование или Композицию для этого, или другое решение? - PullRequest
1 голос
/ 20 января 2011

У меня есть API, который я должен предоставить более высокоуровневому, более дружественному, более обтекаемому фреймворку путем обертывания.

Этот API уже упакован идентично своей неуправляемой версии. Но в нем есть все виды неинтуитивных имен членов, рабочих процессов и т. Д.

Я использую состав для хранения ссылки на базовый тип таким образом, чтобы я мог иметь члены так, как хочу. Основное преобразование и объединение определенных функций в свойства, использование функциональности более высокого уровня с использованием некоторой другой логики более низкого уровня и т. Д.

public class Effect
{
    public IEffect {get; private set;}
    ...
}

Но я начинаю думать о том, что, поскольку исходный API C ++ в значительной степени основан на наследовании и виртуальных методах, как мне следует «разоблачить» / обернуть / связать их?

Должен ли я просто предоставить дополнительные методы, которые вызывают internalType.VirtualMethod() и т. Д.? Но похоже, что это не сработает, верно?

Но, с другой стороны, если я использую Inheritance сам как:

public class Effect : IEffect

тогда у меня будут все эти члены и странные, мрачные функции, идущие с ним. Я все еще могу предоставить свою функциональность более высокого уровня, но я не хочу показывать этих участников по многим причинам, одной из самых простых из которых является то, что они не похожи на .NET.

Что вы предлагаете для этого?

1 Ответ

1 голос
/ 20 января 2011

Написать класс-оболочку. В долгосрочной перспективе вы будете рады, что сделали.

...