如何通过服务引用发布Reflection.MethodBase

时间:2014-10-30 15:39:00

标签: c# asp.net web-services reflection

我正在使用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

有什么想法吗? 提前谢谢。

1 个答案:

答案 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服务将识别。