我正在使用带有Lucene引擎的后端(.Net C#)创建日志系统,并且正在记录每个方法请求。

为此,我在后端创建一个Service Reference,WebService方法参数之一是Reflection.MethodBase。

在前端,我添加了引用(.Net创建了一个Soap Client连接器)。
但是,该方法不要使用Reflection.MethodBase,而需要另一个MethodBase类(TestLogger.RefLogger.MethodBase)。

我认为.Net为不是原始类型的每个方法参数创建一个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


有任何想法吗?
提前致谢。

最佳答案

如果只需要记录此方法的信息,则可以使用MethodBase.GetParameters在FrontEnd中检索此信息:

String methodName
String[] parametersNames
String[] parametersValues


要创建methodName,可以使用methodBase.DeclaringType.Namespace +“。”。 + methodBase.DeclaringType.Name +“。” + methodBase.Name。

要创建parameterNames,请使用MethodBase.GetParameters:
http://msdn.microsoft.com/pt-br/library/system.reflection.methodbase.getparameters(v=vs.110).aspx

然后,您可以将此参数传递到您的后端。

Web服务将识别的这种类型。

08-07 00:46