Opticon Stockholm is on Tuesday September 10th, hope to see you there!
AI OnAI Off
Opticon Stockholm is on Tuesday September 10th, hope to see you there!
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.