Laden...

Lambda bei Generisch vererbten Klasse: Wie ermittelt der Compiler den Typ des Lambda-Parameters?

Erstellt von macFish vor 12 Jahren Letzter Beitrag vor 12 Jahren 653 Views
M
macFish Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren
Lambda bei Generisch vererbten Klasse: Wie ermittelt der Compiler den Typ des Lambda-Parameters?
    public class CustomerMap : ClassMap<Customer>
    {
        public CustomerMap()
        {
            Id(x => x.Id);
            Map(x => x.FirstName);
            Map(x => x.LastName);
            References(x => x.Store);
        }
    }

Ein Lambada Ausdruck ist eine anonymer Delegate. Wie kommt es zustande das x gleich eine Instanz von Customer ist ?

C
1.214 Beiträge seit 2006
vor 12 Jahren

Das leitet der Compiler aus der Methodensignatur her. Ist das Fluent NHibernate? Dann will die Id Methode eine Func<T, Object> haben, also weiß der Compiler, dass der einzige Parameter den Typ T, also Customer hat.

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo macFish,

schön zu sehen, dass du dich mit FluentNHibernate beschäftigst.

Deine Klasse CustomerMap leitet ja von ClassMap<Customer> ab. Damit legst du fest, dass das T in ClassMap<T> vom Typ Customer ist. Das verwendet der Compiler dann für die Lambda-Ausdrücke.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

M
macFish Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren

achaaa ok...

m0rius
danke nochmal für die letzte Antwort.