Non so se sono ancora in tempo per aiutarti o se sei gia stato fulminato dal Dio degli Sviluppatori per aver nominato una variabile "This".

dovrebbe essere cosa fattibile con la reflection:

codice:
using System.Reflection;

codice:
if (This != "")
{
    PropertyInfo pi = MyHash[This].GetType().GetProperty("p");
    string str = (string)pi.GetValue(MyHash[This], null);
}
se p non è di tipo string sostituisci string con il tipo giusto.