Est-il juste de supposer que vous contrôlez les types qui ont « CustomPropertyOfControl »? Si c'est le cas, faites en sorte qu'ils implémentent tous une interface, et cast à cette interface.
Le point d'un transtypage est de dire au compilateur quelque chose que vous savez qu'il ne connaît pas - au moment de la compilation. Ici, vous ne connaissez pas le type au moment de la compilation. Si vous connaissez une classe de base ou une interface, alors vous pouvez dire au compilateur que sans problème.
maintenant en C# 4 vous pourrait faire en utilisant le typage dynamique:
private void ConvertToTypeAndUseCustomProperty(Control c)
{
dynamic d = c;
d.CustomPropertyOfControl = 234567;
}
Cependant, même si vous pouvez faire cela, je recommande toujours coller avec le typage statique, si possible - Si vous avez un groupe de types qui ont tous des fonctionnalités communes, donnez-leur une interface commune.