У меня есть плагиновую архитектуру, в которой базовый класс абстрактных определяется в основном приложении. Он использует отражение для загрузки сборок, которые получили реализации базового класса. Я хотел бы получить информацию о версии сборки, которая содержит производный объект. Вот мой базовый класс:
namespace My.AppNameSpace
{
public abstract class BaseClass
{
public Version Version
{
get
{
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
return new Version(version);
}
}
public abstract void DoStuff();
}
}
Поскольку базовый класс является частью основной сборки приложения, это всегда возвращает информацию о версии исполняемого приложения, а не DLL, которая содержит реализацию производного класса. Я могу изменить аксессуар версии как abstract
, и он работает так, как мне хотелось бы. Но тогда мне нужно добавить те же самые несколько строк кода для каждого внедряющего модуля.
Есть ли какой-то трюк для получения информации о версии производного объекта из кода в базовом классе, который существует в отдельной сборке?