Привет. Предположим, есть какой-то интерфейс IInterface
. Выглядит он примерно так:
public interface IInterface
{
ISubInterface<MyClass> SubInterface { get; }
ISubInterface<MyClass2> SubInterface2 { get; }
ISecondSubInterface<MyClass> SecondSubInterface { get; }
}
В свою очередь, ISubInterface<T>
выглядит примерно так (ISecondSubInterface<T>
выглядит так же, не суть):
public interface ISubInterface<T> where T : class
{
Task<Result<T>> GetAsync(string arg1, TimeSpan? timeout = null);
}
Хотелось бы кодогенерацией решить следующую задачу:
1) Получить все интерфейсы, которые являются типами свойств в IInterface
2) Сгенерировать для них класс с синхронными extensions вида:
public static SubInterfaceExtensions
{
public static Result<T> Get<T>(this ISubInterface<T> i, string arg1, TimeSpan? timeout = null)
{
return i.GetAsync(arg1, timeout).GetAwaiter().GetResult();
}
}
Задача кажется не сложной, разбивается на подзадачи:
1) Найти все интерфейсы из IInterface
2) Получить полную информацию о сигнатурах методов, причём в IInterface
они закрытые generics, а информация нужна еще о незакрытом
3) На основе полученных сигнатур построить новые методы-расширения и засунуть их в соотв. класс
Насколько для этих задач подходит Roslyn и если подходит, то как примерно это всё может выглядеть?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как изучить С# для Unity?Я думаю что есть разница между обычным си шарпом и для Unity
Есть строка из Java приложения, которая формирует signed INT из двух байт массива:
Возникла ошибка в программе, прошу разобратьсяВот скриншоты ошибки и ее места в коде:
Пытаюсь подключить либу Unirest я понимаю что здесь все написано http://unirestio/net но не могу понять что надо вписать и как создать MyClass