我正在使用Lucene引擎创建一个使用后端(.Net C#)的Log系统,并且我记录了每个方法请求。
为此,我在后端创建一个服务引用,其中一个WebService方法参数是Reflection.MethodBase。
在前端,我添加了引用(.Net创建了一个Soap Client连接器)。 但是,该方法不需要Reflection.MethodBase,它需要另一个MethodBase类(TestLogger.RefLogger.MethodBase)。
我认为.Net为每个不是原语的方法param创建了一个Clone类。
问题是,我无法从Reflection.MethodBase转换为MyLooger.MethodBase,例如:
public static void addLog(MethodBase methodBase, object[] parameters, TestLogger.RefLogger.TipoLog tipoLog)
{
TestLogger.RefLogger.WSLoggerSoapClient client = new TestLogger.RefLogger.WSLoggerSoapClient();
client.AddLogNormal(MethodBase.GetCurrentMethod(), parameters, tipoLog);
}
在这里,它告诉我它无法转换类型,即使我尝试使用Cast:
(TestLogger.RefLogger.MethodBase)MethodBase.GetCurrentMethod()
所以,我尝试创建一个方法来转换"对象,创建一个新的MyLogger.MethodBase并复制值,但它没有构造函数。
TestLogger.RefLogger.MethodBase mDest = new TestLogger.RefLogger.MethodBase();//CANNOT DO THIS
有什么想法吗? 提前谢谢。
答案 0 :(得分:0)
如果您只需要记录此方法的信息,可以使用MethodBase.GetParameters在FrontEnd中检索此信息:
String methodName
String[] parametersNames
String[] parametersValues
要创建methodName,您可以使用methodBase.DeclaringType.Namespace +“。” + methodBase.DeclaringType.Name +“。” + methodBase.Name。
要创建parametersNames,请使用MethodBase.GetParameters: http://msdn.microsoft.com/pt-br/library/system.reflection.methodbase.getparameters(v=vs.110).aspx
然后您可以将此参数传递给后端。
此类型的Web服务将识别。