gpt4 book ai didi

c# - 是否可以将其重构为单一方法

转载 作者:太空狗 更新时间:2023-10-29 21:30:45 24 4
gpt4 key购买 nike

我有一堆看起来像这两个的方法:

   public void SourceInfo_Get()    
{
MethodInfo mi = pFBlock.SourceInfo.GetType().GetMethod("SendGet");
if (mi != null)
{
ParameterInfo[] piArr = mi.GetParameters();
if (piArr.Length == 0)
{
mi.Invoke(pFBlock.SourceInfo, new object[0]);
}
}
}
public void SourceAvailable_Get()
{
MethodInfo mi = pFBlock.SourceAvailable.GetType().GetMethod("SendGet");
if (mi != null)
{
ParameterInfo[] piArr = mi.GetParameters();
if (piArr.Length == 0)
{
mi.Invoke(pFBlock.SourceAvailable, new object[0]);
}
}
}

我的 pFBlock 对象中的每个属性都有一个方法。由于方法之间的变化很小,我觉得应该有更好的方法来做到这一点,但我想不出任何方法。我正在使用 VS 2005。

最佳答案

3种方法怎么样?

public void SourceInfo_Get()    
{
SendGet(pFBlock.SourceInfo);
}

public void SourceAvailable_Get()
{
SendGet(pFBlock.SourceAvailable);
}

private void SendGet(Object obj) {
MethodInfo mi = obj.GetType().GetMethod("SendGet");
if (mi != null)
{
ParameterInfo[] piArr = mi.GetParameters();
if (piArr.Length == 0)
{
mi.Invoke(obj, new object[0]);
}
}
}

这里的想法是添加一个辅助方法,您可以将参数传递给该方法。然后,您可以在其他方法中使用辅助方法来大幅缩短代码。

关于c# - 是否可以将其重构为单一方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4246307/

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