Я портирую библиотеку с открытым исходным кодом из обычного профиля клиента .NET 4 в DNX Core 5.0. В библиотеке довольно много изменений: свойства или методы перемещаются или полностью удаляются. Я просмотрел этот ответ, но в моем случай, потому что метод был удален.
Одна из проблем - у меня есть фрагмент кода, в котором вызывается MethodBase.GetCurrentMethod()
. Этот метод больше не существует в API. Остались только похожие методы:
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle);
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle, RuntimeTypeHandle declaringType);
Но я не уверен, что это за «ручка». Мне нужно получить MethodBase, чтобы получить доступ к его параметрам, чтобы затем обработать их для запроса REST API. Это код, который создает объект в .NET 4:
public static Annotation Annotation(string query = null, string text = null, string type = null, string name = null, string entity = null, int limit = 25, int offset = 0)
{
var search = Help.SearchToString(MethodBase.GetCurrentMethod(), query, text, type, name, entity);
return Help.Find<Annotation>(search, limit, offset, "annotation");
}
И затем он используется здесь:
public static string SearchToString(MethodBase m, params object[] search)
{
var paras = m.GetParameters();
var result = string.Empty;
for (var i = 0; i < search.Length; i++)
{
if (search[i] != null)
{
if (i == 0)
{
result += search[i] + "%20AND%20";
}
else
{
result += paras[i].Name.ToLower() + ":" + search[i] + "%20AND%20";
}
}
}
return result.LastIndexOf("%20AND%20", StringComparison.Ordinal) > 0
? result.Substring(0, result.LastIndexOf("%20AND%20", StringComparison.Ordinal))
: result;
}
Каким другим способом я мог бы получить доступ к параметрам объекта MethodBase
в методе SearchToString()
, если я не могу легко передать указанный MethodBase
в качестве параметра?