using System;
namespace myTest
...{
public interface ITest
...{
string Insert(string str);
string Update(string str);
string Delete(string str);
string Select(string str);
}
public class CTest1 : ITest
...{
ITest 成员#region ITest 成员
public string Insert(string str)
...{
return "CTest1-Insert-" + str;
}
public string Update(string str)
...{
return "CTest1-Update-" + str;
}
public string Delete(string str)
...{
return "CTest1-Delete-" + str;
}
public string Select(string str)
...{
return "CTest1-Select-" + str;
}
#endregion
}
public class CTest2 : ITest
...{
ITest 成员#region ITest 成员
public string Insert(string str)
...{
return "CTest2-Insert-" + str;
}
public string Update(string str)
...{
return "CTest2-Update-" + str;
}
public string Delete(string str)
...{
return "CTest2-Delete-" + str;
}
public string Select(string str)
...{
return "CTest2-Select-" + str;
}
#endregion
}
public delegate void DelegateTest<T>(T t) where T : ITest;
static class Program
...{
private static void test1(CTest1 t)
...{
Console.WriteLine(t.Insert("测试"));
Console.WriteLine(t.Update("测试"));
Console.WriteLine(t.Delete("测试"));
Console.WriteLine(t.Select("测试"));
}
private static void test2(CTest2 t)
...{
Console.WriteLine(t.Insert("测试"));
Console.WriteLine(t.Update("测试"));
Console.WriteLine(t.Delete("测试"));
Console.WriteLine(t.Select("测试"));
}
[STAThread]
static void Main()
...{
DelegateTest<CTest1> t1 = new DelegateTest<CTest1>(test1);
t1(new CTest1());
DelegateTest<CTest2> t2 = new DelegateTest<CTest2>(test2);
t2(new CTest2());
Console.ReadKey();
}
}
}
运行结果:
CTest1-Insert-测试
CTest1-Update-测试
CTest1-Delete-测试
CTest1-Select-测试
CTest2-Insert-测试
CTest2-Update-测试
CTest2-Delete-测试
CTest2-Select-测试
本文通过一个具体的C#示例介绍了如何使用接口和委托实现不同类间的相同方法调用。示例中定义了一个接口ITest,包含增删改查四个方法,并由CTest1和CTest2两个类实现。此外,还定义了两个泛型委托DelegateTest来调用这两个类的方法。
269

被折叠的 条评论
为什么被折叠?



