我正在将开放源码库从常规的.NET 4客户端配置文件移植到DNXCore5.0。有相当多的库更改,属性或方法被移动或完全删除。我看过this answer,但是它在我的例子中不起作用,因为这个方法被删除了。
其中一个问题是,我有一段代码,其中调用了MethodBase.GetCurrentMethod()。API中不再存在此方法。剩下的唯一类似的方法是:
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle);
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle, RuntimeTypeHandle declaringType);但我不知道“把手”是什么。我需要获得MethodBase,以便访问它的参数,然后为REST查询处理它们。这是在.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对象参数吗?
发布于 2015-09-15 12:32:00
假设方法Annotation在类TestClass中,请使用
typeof(TestClass).GetMethod(nameof(Annotation))https://stackoverflow.com/questions/32583711
复制相似问题