реализующих интерфейс для доступа к Internal-типам?
Недоступный тип из внешней библиотеки:
internal class External
{
private void Do();
}
Доступный интерфейс, описанный в нашей DLL:
public interface IExternal
{
void Do();
}
...
Пример использования:
void Sample(object arg)
{
IExternal external = arg.WrapAs<IExternal>();
external.Do();
}
...
Сгенерированное описание типа для доступа к приватным полям, свойствам и методам.
От пакета хочется именно этого функционала. Желательно, чтобы вместо рефлекшена создавались динамические методы, но это не столь принципиально:
internal class GeneratedWrapper : IExternal
{
private readonly object _obj;
public GeneratedWrapper(object obj)
{
_obj = obj;
}
public void Do()
{
_obj.GetType().GetMethod("Do").Invoke(_obj);
}
}
Копай в сторону IgnoreAccessChecksToAttribute
Ты настолько подробно прописал ТЗ, что, кажется, можно бы уже и своими силами такую либу нагородить :)
Я бы сам dll редактировал после установки пакета, наверняка есть хук постинсталл или бефоребилд туда запуск кода по изменению атрибутов нужных классов.
Обсуждают сегодня