Если вы используете .NET 4, вы можете использовать новое ключевое слово dynamic
:
protected void AddNewForm(dynamic o)
{
try
{
o.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Если вы не используете .NET 4, вам придется прибегнуть к рефлексии.будет выглядеть примерно так:
protected void AddNewForm(object o)
{
try
{
o.GetType().GetMethod("Show", new Type[0]).Invoke(o, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Но вы действительно должны рассмотреть возможность использования общего интерфейса:
interface IShowable
{
void Show();
}
class Contact : IShowable
{
public void Show() { /* ... */ }
}
protected void AddNewForm(IShowable o)
{
try
{
o.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}