【发布时间】:2011-05-03 07:02:22
【问题描述】:
我有 2 个这样的重载 C# 函数:
private void _Insert(Hashtable hash, string tablename, Func<string, object[], SqlCommand> command)
private void _Insert(Hashtable hash, string tablename, Func<string, object[], OleCommand> command)
基本上一个使用OleCommand,另一个使用SqlCommand作为函数的返回值。
但丑陋的一点是我必须将函数指针转换为正确的类型,即使我觉得编译器应该能够毫无问题地解决它:
class RemoteDatabase
{
public SqlCommand GetCommand(string query, object[] values);
}
_Insert(enquiry, "Enquiry", (Func<string, object[], SqlCommand>)(_RemoteDatabase.GetCommand));
有什么方法可以告诉编译器更聪明,这样我就不必进行类型转换了?还是我做错了什么?
编辑: 添加了赏金,因为我真的有兴趣学习。感谢您的建议。
【问题讨论】:
-
哇..所有答案各有 4 票!我该如何决定?
-
C# 4.0 也可以在
dynamic场景中解决这个问题,但是,性能会受到影响。
标签: c# overloading