gpt4 book ai didi

c# - 有很多采用相同参数的函数?

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

如果问题有点不清楚,我很抱歉。请随时清理/概括这个问题。我不太懂英语,自己做不到

我需要使用一个 web 服务,该 web 服务的所有方法都将身份验证对象作为第一个参数

class webservice{
e_webservice_return_value method1(object authentication,object param1,object param2,object param32)
e_webservice_return_value method2(object authentication,object param1,object param2)
.....
}

有数百种方法。

我想创建一个提供所有方法的提供者类现在我可以创建一个名为 provider 的类并为每个方法编写

class provider{
object _auth;
e_webservice_return_value method1(object param1,object param2,object param3)
{
var res= method1(_auth,param1,param2,param3);
if(res=bad auth)
{
ReAuth(auth);
}
return res;
}

e_webservice_return_value method2(object param1,object param2)
{
var res =return e_webservice_return_value method2(_auth,param1,param2);
if(res=bad auth)
{
ReAuth(auth);
}
return res;
}
}

所有数百种方法都需要这种模式。

有没有一种技术可以创建这样一个外观对象,而无需实际编写 100 多个具有相同功能的函数? (只有第一个参数相同)其他可能不同

最佳答案

您可能想要使用 Reflection.Emit。可以在 this site 找到一个不错但可能有点过时的教程。 .另请查看 MSDN - 他们有很棒的文档!

您通常想要做的是用一个属性标记每个方法(或整个类),并为每个这样的方法/类和一个属性创建一个包装方法,并替换代码。您可以让它在应用程序初始化或第一次调用此类/方法时运行,设计由您决定。

这不是一件容易的事,但实际上我们在项目中遇到过相同的情况,事实证明这是一个很好的解决方案。这是因为具有给定属性的每个方法都需要类似的处理。

请记住,有一些替代方法可以发出代码,但我不太了解它们,所以我无法提供任何建议 - 但它很容易被谷歌搜索。

Reflection.Emit 与 IL 本身是相当麻烦的,但它肯定可以让您更多地了解您的 c# 代码中正在发生的事情,在引擎盖下。

关于c# - 有很多采用相同参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13488771/

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