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();
}
}
}
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-测试