委托中的参数问题

蛇仔 2004-11-29 10:11:14
我在类中定义了一个委托
class myclass
{
private delegate void mydelegate();
private mydelegate use; //希望在一个函数中设置它的值

public setuse(这里传入函数名)
{
use = new mydelegate(函数名);
}

}

也就是说我希望用myclass只要调用setuse()函数,传入函数名就能实例化委托.
请问setuse()函数的参数如何写?

...全文
94 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhy0101 2004-11-29
  • 打赏
  • 举报
回复
用反射
m777 2004-11-29
  • 打赏
  • 举报
回复
晕!其实不是我写死了,只是你这种调用就肯定会死,建议你使用调用DLL中方法的:
private static object LoadObject( string GetDllPath,string MethodName )
{
Assembly l = Assembly.LoadFrom( GetDllPath );
object temp = l.CreateInstance( MethodName ); //调用DLL中的方法
return temp; //返回获取的DLL中的东东

}
simonw 2004-11-29
  • 打赏
  • 举报
回复
不能动态传入吧,编译器要检查类型的,和声明的函数模样一样的才能传入以保证安全性
蛇仔 2004-11-29
  • 打赏
  • 举报
回复
to m777((我的家乡江西新余))
:如果是你的办法就是写死了程序了,跟我的想法初衷不同,我是希望能做得灵活点.

想问问exboy(kuku),用接口如何实现呢?
exboy 2004-11-29
  • 打赏
  • 举报
回复
可以使用其他的方法来实现这种功能,如使用接口
dazhu2 2004-11-29
  • 打赏
  • 举报
回复
没有用过,
m777 2004-11-29
  • 打赏
  • 举报
回复
你的这种愿望好像不好实现,不过可以这样你考虑一下:
public setuse( string 函数名)
{
switch( 函数名 )
{
case "A":
use = new mydelegate(A);
break;
case "B":
use = new mydelegate(B);
break;
..........
}
}
exboy 2004-11-29
  • 打赏
  • 举报
回复
这样应该不行,C#中不能这样。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧