public virtual XElement ToXml( ) { return(new XElement( @"Editor", new XAttribute(@"ClrTypeOfEditor", GetType( ).AssemblyQualifiedName), // we need to write the properties type so that in-game component can recreate them new XAttribute(@"ClrTypeOfProperties", ItemProperties.GetType( ).AssemblyQualifiedName), new XAttribute(@"Name", Name), ItemProperties.SerializeToXml( ), Behaviours.ToXml( ) )); }