propriété J'ai la hiérarchie de classe suivanteméthode d'extension pour un accès fortement typé
class Test
{
public string Name { get; set; }
}
class TestChild : Test
{
public string Surname { get; set; }
}
Je ne peux pas changer la classe de test. Je veux écrire la suite méthode d'extension comme ceci:
static class TestExtensions
{
public static string Property<TModel, TProperty>(this Test test, Expression<Func<TModel, TProperty>> property)
{
return property.ToString();
}
}
Pour pouvoir l'utiliser de la manière suivante:
class Program
{
static void Main(string[] args)
{
TestChild t = new TestChild();
string s = t.Property(x => x.Name);
}
}
Mais maintenant compilateur dit
Les arguments de type pour la méthode 'ConsoleApplication1.TestExtensions.Property (ConsoleApplication1.Test, System.Linq.Expressions.Expression>)' ne peut pas être déduit de l'utilisation. Essayez de spécifier explicitement les arguments de type.
Je veux avoir quelque chose comme mvc Html.TextBoxFor (x => x.Name) méthode. Est-il possible d'écrire l'extension à utiliser comme indiqué dans la méthode Main
?
J'ai raté ce la première fois :( – poindexter12
En outre, je ne pense pas que property.ToString() est la bonne chose à faire là-bas. – poindexter12