2014-01-06 15 views
10

Ich habe das Paket Glass.Mapper.Sc.CastleWindsor in Version 3.1.2.11 auf meiner Sitecore 7.1-Lösung installiert und versuche, mit abgeleiteten Typen zu arbeiten. Ich habe die folgenden Klassen:Glass Mapper: InferType wird ignoriert, wenn der SitecoreContext abgefragt wird

[SitecoreType] 
public class ServiceConfiguration 
{ 
    [SitecoreField(FieldName = "Service Id")] 
    public virtual string ServiceId { get; set; } 
} 

[SitecoreType(TemplateId = "{26512C19-8D30-4A1E-A2CD-3BA89AF70E71}")] 
public class JavascriptServiceConfiguration : ServiceConfiguration 
{ 
    [SitecoreField(FieldName = "Is Header Responsive")] 
    public virtual bool IsHeaderResponsive { get; set; } 
} 

Und ich habe diesen Artikel:

enter image description here

In meinem Code, ich versuche, aus dem aktuellen Kontext von Glas mit der folgenden Zeile abgebildet diesen Artikel erhalten von Code:

var serviceConfig = (new SitecoreContext()).GetItem<ServiceConfiguration>("{5436EEC6-1A4D-455F-8EF7-975C51FAE649}", inferType: true); 

nach dem documentation on inferred types, würde ich erwarten, dass serviceConfig vom Typ wäre JavascriptServiceConfiguration, aber es ist vom Typ ServiceConfiguration. Fehle ich etwas? Ich habe keine spezielle Konfiguration für Glas vorgenommen.

Antwort

14

Bevor Typen abgeleitet werden können, müssen sie von Glass.Mapper geladen werden. Die neuere Version von Glass lädt Typen, wenn sie angefordert werden, aber dies funktioniert nicht für abgeleitete Typen. Um dies zu beheben, können Sie Glass zwingen, die Typen beim Start der Anwendung zu laden.

Suchen Sie zuerst die GlassMapperScCustom-Klasse in Ihrer Lösung. Sie sollten dann die GlassLoaders-Methode aktualisieren:

public static IConfigurationLoader[] GlassLoaders() 
    { 
     var attributes = new AttributeConfigurationLoader("Your assembly name"); 

     return new IConfigurationLoader[] {attributes }; 
    } 

Lassen Sie mich wissen, wenn dies nicht behoben wird.

+0

Dies wurde behoben. Ich habe "SitecoreAttributeConfigurationLoader" in "AttributeConfigurationLoader" in Ihrer Lösung geändert, weil der Sitecore als veraltet markiert ist ;-) –

+2

@MichaelEdwards Danke. Sie sollten wahrscheinlich mit der Aktualisierung [Tutorial 1] (http://glass.lu/docs/tutorial/sitecore/tutorial01/tutorial01.html) und [20] (http://glass.lu/docs/tutorial/sitecore) fortfahren /tutorial20/tutorial20.html) auf der Glass-Website. – GFoley83