class CFirst
{
public delegate string DelegateHandler(string str);
}
class CSecond
{
public static string getStr(string str)
{
Console.WriteLine("传输如的是:" + str);
return str;
}
}
class CTest
{
public static void Main()
{
CFirst.DelegateHandler dh = new CFirst.DelegateHandler(CSecond.getStr);
Console.WriteLine(dh("HelloWorld!"));
}
}
上面委托初始化的部分CFirst.DelegateHandler dh = new CFirst.DelegateHandler(CSecond.getStr);
我怎么样搞成
public string tempMethod(xxxx methodname,string str) //XXXX代表CSecond.getStr传入的类型
{
CFirst.DelegateHandler dh = new CFirst.DelegateHandler(methodname);
return dh(str);
}
我如何才能实现实例化委托的函数参数化呢?
{
public delegate string DelegateHandler(string str);
}
class CSecond
{
public static string getStr(string str)
{
Console.WriteLine("传输如的是:" + str);
return str;
}
}
class CTest
{
public static void Main()
{
CFirst.DelegateHandler dh = new CFirst.DelegateHandler(CSecond.getStr);
Console.WriteLine(dh("HelloWorld!"));
}
}
上面委托初始化的部分CFirst.DelegateHandler dh = new CFirst.DelegateHandler(CSecond.getStr);
我怎么样搞成
public string tempMethod(xxxx methodname,string str) //XXXX代表CSecond.getStr传入的类型
{
CFirst.DelegateHandler dh = new CFirst.DelegateHandler(methodname);
return dh(str);
}
我如何才能实现实例化委托的函数参数化呢?
解决方案 »
- 请教VS2008 自定义模板问题?
- Entity Framework数据库连接符问题
- 关于C#调用WebService的问题,坐等求解
- 悬赏!!!急需!!!WINFORMS问题!!!答得好再追加100!!!
- sql语句怎么写?????????????
- 高分求MP3信息修改的.NET模块
- 新手求教!不知为什么代码写好了无法F5运行?“未能加载文件或程序集”
- SmtpClient发信失败,请求帮助!
- 高分征求.NET下自定义报表解决方案!!!
- wpf model的属性如何不写OnPropertyChanged能让界面更新
- 为什么设置了行,列,不显示出来表格啊。
- 【C#入门经典】书上源代码出错?(无法实现菜单和工具栏的加粗)
{
public static string getStr(string str)
{
Console.WriteLine("传输如的是:" + str);
return str;
}
}
class CTest
{
public static void Main()
{
DelegateHandler dh = new DelegateHandler(CSecond.getStr);
Console.WriteLine(dh("HelloWorld!"));
}
}
我怎么样搞成
public string tempMethod(DelegateHandler handler,string str) //XXXX代表CSecond.getStr传入的类型
{
if (handler != null)
return handler(str);
return null;
}
class CSecond 常{
public static string getStr(string str)
{
Console.WriteLine("传输如的是:" + str);
return str;
}
} public string tempMethod(string assembly, string type, string str) //XXXX代表CSecond.getStr传入的类型
{
Assembly a = Assembly.LoadFrom(assembly);
Type FooType = a.GetType(type);
object foo = Activator.CreateInstance(FooType);
CFirst.DelegateHandler dh = new CFirst.DelegateHandler(foo.getStr);
return dh(str);
}可一将class的名字参数化,但methodname是固定的,可是class里面的方法名也参数化可能就不行了.
名字也要参数化,就要用到reflection
看看这个吧How to: Hook Up a Delegate Using Reflectionup
{
public static string getStr(string str)
{
Console.WriteLine("传输如的是:" + str);
return str;
}
}
class CTest
{
public static void Main()
{
DelegateHandler<string> dh = new DelegateHandler<string>(CSecond.getStr);
Console.WriteLine(dh("HelloWorld!"));
}
}
我怎么样搞成
public string tempMethod(DelegateHandler<string> handler,string str) //XXXX代表CSecond.getStr传入的类型
{
if (handler != null)
return handler(str);
return null;
}