我正在编写一个方法,该方法正在调用其中的另一个重载方法。我只想编写一种外部方法,因为外部方法的参数正在传递给内部方法。有没有办法做到这一点?
我尝试使用泛型,但我对此了解不够,所以它不起作用:
public void OuterMethod<T>(T parameter)
{
InnerMethod(parameter); // InnerMethod accepts an int or a string
}
我知道我可以这样做:
public void OuterMethod(string parameter)
{
InnerMethod(parameter);
}
public void OuterMethod(int parameter)
{
InnerMethod(parameter);
}
但我宁愿以正确的方式执行此操作,而不是复制/粘贴代码。实现这一目标的最佳方法是什么?
您可以在 C++ 中执行此操作,但不能在 C# 中执行此操作(除非内部方法也可以是通用的而不是重载的)。
或者(如果您不接受“否”的答案),您可以在类型上进行运行时切换,例如......
public void OuterMethod(object parameter)
{
if (parameter is int)
InnerMethod((int)parameter);
else if (parameter is string)
InnerMethod((string)parameter);
else
throw new SomeKindOfException();
}
...但显然这是运行时检查,而不是编译时检查。
但我宁愿以正确的方式执行此操作,而不是复制/粘贴代码。
您还可以编写软件来编写外部方法(例如使用 System.CodeDom 类),而不是手动编写它们,但这可能比其价值更麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)