gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:07 24 4
gpt4 key购买 nike

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

为此,我在后端创建了一个服务引用,WebService 方法参数之一是 Reflection.MethodBase。

在前端,我添加了引用(.Net 创建了一个 Soap 客户端连接器)。但是,该方法不需要 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 检索此信息:

String methodName
String[] parametersNames
String[] parametersValues

要创建 methodName,您可以使用 methodBase.DeclaringType.Namespace + "."+ methodBase.DeclaringType.Name + "."+ 方法库名称。

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

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

Web 服务可以识别的这种类型。

关于c# - 如何通过服务引用发布 Reflection.MethodBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com