Чтобы получить фактический тип объекта, вместо typeof , который получает тип для имени типа (как в typeof(string)
), вам нужно использовать c.GetType () , который получает фактический тип объекта, на который указывает c
.
Что касается (type)c
, вы не можете этого сделать: приведение типов работает только с использованием определенного имени типа. Если вам нужно вызывать метод changeFont
только в элементах управления, которые являются производными от вашего пользовательского типа, или производными от них, вы должны выполнить:
if(typeof(MyControlType).IsAssignableFrom(c.GetType()) {
((MyControlType)c).changeFont(fontModifier);
}
Или еще проще:
var myControl = c as MyControlType;
if(myControl != null) {
myControl.changeFont(fontModifier);
}