У меня есть абстрактный класс, который должен иметь возможность загружать файлы, содержащиеся в сборке, которые сделали объект класса. То, что я могу использовать, - FileAssembly = Assembly.GetCallingAssembly()
для каждого дочернего элемента моего класса, но поскольку это библиотека, которую могут продлить люди, я хочу, чтобы это произошло, не требуя от них этого.Получите сборку кода, который создает экземпляр объекта (с наследованием)
Моя установка прямо сейчас что-то вдоль линий:
public abstract class ExternalResource : Resource, IDisposable
{
public string File { get; private set; }
protected Assembly FileAssembly { get; set; }
protected ExternalResource(string id, string file)
: base(id)
{
File = file;
}
//and s'more code
}
public class Sound : ExternalResource
{
public Sound (string id, string file)
: base(id, file)
{
//this is the line I want to be able to get rid of
FileAssembly = Assembly.GetCallingAssembly();
}
}
кто-то использует мою библиотеку могли бы сделать свой собственный ExternalResource без установки FileAssembly, что не желательно. Это становится действительно грязным, если они наследуют от класса, который уже наследует от ExternalResource. Как я могу получить сборку кода, создающего экземпляр объекта? Любой другой способ обойти его без чрезмерного изменения существующей системы тоже будет оценен!
Вам нужна сборка вызывающего кода или сборка, которая определяет производный тип? –
Вызывающий код, идея гласит, что везде, где должен быть поставлен файл, должна быть разрешенная сборка. – Villermen