在我的 CF 应用程序中,我使用以下代码克隆控件:
private static T Clone<T>(T controlToClone)
where T : Control
{
try
{
PropertyInfo[] controlProperties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
T instance = Activator.CreateInstance<T>();
foreach (PropertyInfo propInfo in controlProperties)
{
if (propInfo.CanWrite)
{
if (propInfo.Name != "WindowTarget")
propInfo.SetValue(instance, propInfo.GetValue(controlToClone, null), null);
}
}
return instance;
}
catch (Exception e) { MessageBox.Show(e.InnerException.Message); return null; }
}
当我克隆面板控件并且循环到达“字体”属性时,出现异常
带有 InnerException 的“System.Reflection.TargetInvocationException”:“System.NotSupportedException”。
为什么会这样?有没有办法避免它?