我在asp.net中使用此方法来克隆我的控件:
public static Control Clone( Control ctrlSource )
{
Type t = ctrlSource.GetType();
Control ctrlDest = ( Control )t.InvokeMember( "" , BindingFlags.CreateInstance , null , null , null );
foreach( PropertyInfo prop in t.GetProperties() )
{
if( prop.CanWrite )
{
if( prop.Name == "ID" )
{
ctrlDest.ID = ctrlSource.ID + "cloned" + Security.Cryptography.Cryptography.generateRandomPrivateKey( 5 );
}
else
{
prop.SetValue( ctrlDest , prop.GetValue( ctrlSource , null ) , null );
}
}
}
return ctrlDest;
}
如何在目标控件中设置源控件事件(如Click事件)?
答案 0 :(得分:0)
您无法获得使用反射订阅事件的方法列表(AKA Invocation List
)。您可以订阅或取消订阅,但无法获取所有方法的列表。每个控件(或类型)都可以以不同的方式实现它。
为什么不解释为什么要这样做,有人可以提出另一种方法来做到这一点。