Chắc chắn bạn có thể sử dụng Func<T1, T2, TResult>
đại biểu:
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
}
đại biểu này định nghĩa một hàm mà có hai tham số chuỗi và trả về một chuỗi. Nó có rất nhiều người anh em họ để xác định các hàm có số lượng tham số khác nhau. Để gọi myMethod
với phương pháp khác, bạn chỉ có thể vượt qua trong tên của phương pháp này, ví dụ:
public String doSomething(String s1, String s2) { ... }
public String doSomethingElse(String s1, String s2) { ... }
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
string result1 = f1("foo", "bar");
string result2 = f2("bar", "baz");
//code
}
...
myMethod(doSomething, doSomethingElse);
Tất nhiên, nếu tham số và kiểu trả về của f2
không giống hệt nhau, bạn có thể cần phải điều chỉnh chữ ký phương thức cho phù hợp.
Nguồn
2013-08-11 21:27:48
[C# đại biểu, phương thức ẩn danh và biểu thức Lambda] (http://www.codeproject.com/Articles/47887/C-Delegates-Anonymous-Methods-and-Lambda-Expressio) – I4V