2015-06-18 6 views
0

У меня есть куча классов во внешней библиотеке, которая не является частью моего приложения, над которым я работаю.Функции/свойства доступа из другого класса

Поскольку мое приложение использует свою собственную библиотеку, которая также содержит множество функций, я также хочу использовать классы/объекты из внешней библиотеки.

Скажем, у меня есть класс, как это в моем внешнем DLL:

namespace Mydll.ExternalDLL 
{ 
    public class ObjectClass 
    { 
     public void DoSomething() { } 
    } 
} 

Поскольку я не хочу, чтобы ссылаться на внешние библиотеки DLL для моего приложения, мне нужно, чтобы получить доступ к этой функции где-то остальное.

Таким образом, идея состояла в том, чтобы сделать что-то подобное в моей внутренней, ссылка DLL:

using Mydll.ExternalDLL; 
namespace Mydll.InternalDLL 
{ 
    public class ObjectClass : Mydll.ExternalDLL.ObjectClass 
    { 
     public void DoSomethingElse() { } 
    } 
} 

Как вы можете видеть, что нет никакой функции называется DoSomething() внутри моей внутренней библиотеки DLL. При вызове ObjectClass из внутренней dll я просто хочу иметь доступ к DoSomething() AND DoSomethingElse() одновременно без какого-либо странного преобразования, что приведет к ссылке на обе библиотеки для моего приложения. Внутренняя dll будет больше похожа на пакет расширения, дополняющий отсутствующие функции со своей базы.

Есть ли способ достичь того, чего я хочу, или я просто слеплю некоторые ограничения, которые мне не хватает?

+0

Почему вы не можете добавить ссылку на свою библиотеку? – mattytommo

+0

Ну, я мог бы. Но я не хочу, потому что каждая связанная функция/объект должна обрабатываться только путем доступа к внутренней dll. Я забыл упомянуть, что внешняя dll была написана другой компанией, и у меня нет исходного кода. Поэтому любой, кто использует эту библиотеку, должен только добавить внутренний, имея доступ ко всему, что содержится в обеих библиотеках. Это то, что я хочу. – Thyrador

ответ

0

Вы не можете избежать ссылки на внешнюю dll. Либо явно, либо неявно, но вы должны это сделать. Вы можете создать свои собственные обертки, если это то, что вам нужно. Это помогает получить немного больше контроля над вашими зависимостями.

using Mydll.ExternalDLL; 
public class ObjectClassWrapper 
{ 
    ObjectClass _objectClass = new ObjectClass(); 
    public void DoSomething() 
    { 
     _objectClass.DoSomething(); 
    } 
} 
+0

Да, это имело это в виду как окончательное решение. Но это приведет к тому, что недели написания «ненужного» кода просто обернутся вокруг внешней библиотеки. Внешняя библиотека будет ссылаться на внутреннюю dll. - EDIT: только что скорректировал некоторые части кода в моей записи. Надеюсь, это будет более ясным для того, что я хочу. – Thyrador

Смежные вопросы