Справедливо ли предположить, что вы управляете типами, имеющими CustomPropertyOfControl? Если это так, заставьте их реализовать интерфейс и приведите к этому интерфейсу.
Смысл приведения в том, чтобы сообщить компилятору то, что вы знаете, что он этого не делает - во время компиляции . Здесь вы не знаете тип во время компиляции. Если вы знаете некоторый базовый класс или интерфейс, то вы можете сообщить компилятору , что без проблем.
Теперь в C # 4 вы могли бы сделать это, используя динамическую типизацию:
private void ConvertToTypeAndUseCustomProperty(Control c)
{
dynamic d = c;
d.CustomPropertyOfControl = 234567;
}
Однако, даже если вы можете сделать это, я все равно рекомендую придерживаться статической типизации, если это вообще возможно - если у вас есть группа типов, у всех из которых есть некоторые общие функции, дайте им общий интерфейс.