Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
AI OnAI Off
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
That's true, the EmptyDefinition property is never set
private static SiteDefinition EmptyDefinition;
// ...
public static SiteDefinition Empty
{
get
{
return EmptyDefinition ?? new SiteDefinition
{
StartPage = ContentReference.EmptyReference
};
}
internal set
{
EmptyDefinition = value;
}
}
This property will always be recreated.
Create a custom class if you must have a singleton :P
public class SiteDefinitionCustom : IReadOnly<SiteDefinitionCustom>, IReadOnly
{
private static SiteDefinition EmptyDefinition;
public bool IsReadOnly { get; private set; }
public static SiteDefinition Empty
{
get
{
// horrible but will work 😁
if(EmptyDefinition is null)
{
EmptyDefinition = new SiteDefinition
{
StartPage = ContentReference.EmptyReference
};
}
return EmptyDefinition;
}
internal set
{
EmptyDefinition = value;
}
}
public object CreateWritableClone()
{
throw new NotImplementedException();
}
public void MakeReadOnly()
{
throw new NotImplementedException();
}
SiteDefinitionCustom IReadOnly<SiteDefinitionCustom>.CreateWritableClone()
{
throw new NotImplementedException();
}
}
The description of SiteDefinition.Empty says: This is a singleton instance which can be compared against using object comparison. However, if SiteDefinition.Empty is compared to itself, the result returned is false meaning this instance is not a singleton (SiteDefinition.Empty == SiteDefinition.Empty => false).
For comparison, on the .net-framework, SiteDefinition.Empty used to be initialized in WebIdentityInitialization initialization module.