Прежде всего, я бы попытался реализовать некоторую общность в объектах, которые вы хотите проверить.
Например, необходимо ли, чтобы Toto определял test1, а Titi определял testA? Было бы возможно, если бы Тото и Тити определили оба test1? Таким образом, вы сможете создать общий интерфейс для обоих:
public class Toto
{
private string test1 = "Hello from Toto object";
public string Test1 { get { return this.test1; } }
}
public class Titi
{
private string test1 = "Hello from Titi object";
public string Test1 { get { return this.test1; } }
}
Теперь вы можете определить общий интерфейс:
public interface ICheerfulObject
{
string Test1 { get; }
}
Сделайте так, чтобы оба ваших класса реализовали этот интерфейс следующим образом:
public class Toto: ICheerfulObject
{
....
}
pulbic class Titi: ICheerfulObject
{
....
}
И тогда вы можете сделать:
public void CheckData(ICheerfulObject o)
{
string data = o.Test1;
}
Если этот сценарий недействителен и вам действительно нужно использовать Reflection, попробуйте следующее:
public void CheckData(object o)
{
PropertyInfo property = o.GetType().GetProperty("Test1"); //Get used to using public properties.
string data = (string)property.GetValue(o, null);
}