2016-06-20 2 views
0

Мне нужно изменить файл C# из пакета, который я установил с помощью NuGet, чтобы добавить некоторые специальные функциональные возможности для моего проекта.Как «взломать» файл C# из пакета, чтобы изменить его в соответствии с моими потребностями?

У меня есть исходный код (абстрактного) класса, который я хочу изменить (see here).

Каков правильный способ импорта класса в моем решении VS2015, чтобы он перезаписывал или имел приоритет над пакетом NuGet, уже установленным в моем проекте?

+0

Есть ли у вас другие пакеты nuget, которые зависят от него? –

+1

Вместо того, чтобы модифицировать класс из пакета, можете ли вы создать производный класс, который добавит нужные функции? – itsme86

ответ

0

Вы можете переопределить класс вручную добавлять исходный код класса, что-то вроде этого:

namespace TheNUGETLibraryDll 
{ 
    public class SomeClass 
    { 
     public virtual void MethodToChange() 
     { } 
    } 
} 

namespace YourProject 
{ 
    public class DerivedClass : SomeClass 
    { 
     public override void MethodToChange() 
     { } 
    } 
} 
2

В файле исходного кода вы упомянули, в нем говорится, что:

Этот файл часть SharpMap. SharpMap - бесплатное программное обеспечение; вы можете перераспределить его и/или изменить его в соответствии с лицензией GNU Lesser General Public License, опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по вашему выбору) любой более поздней версии.

Это значит, что вы можете скачать исходный код, отредактировать его и сохранить новую ветку. Это простой способ.

Конечно, вы можете попробовать обратное проектирование двоичных файлов, что было бы контрпродуктивным. Или вы можете надеяться, что абстрактный класс сидит в своей собственной DLL, а затем сгенерирует новую DLL для замены исходного файла. Затем запустите приложение и скрестите пальцы.

Я бы выбрал легкий путь.