#region Disclaimer / License
// Copyright (C) 2014, Jackie Ng
// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie@gmail.com
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
#endregion Disclaimer / License
using System;
using System.ComponentModel;
using System.IO;
using System.Text;
namespace OSGeo.MapGuide.ObjectModels
{
///
/// Represents a MapGuide Resource
///
public interface IResource : IVersionedEntity, ICloneable, INotifyPropertyChanged
{
///
/// Gets the validating schema.
///
/// The validating schema.
string ValidatingSchema { get; }
///
/// Gets or sets the resource ID.
///
/// The resource ID.
string ResourceID { get; set; }
///
/// Gets the type of the resource.
///
/// The type of the resource.
string ResourceType { get; }
///
/// Serializes this instance to XML and returns the XML content. It is not recommended to call this method directly
/// instead use as that will invoke any pre-serialization
/// hooks that may have been set up for this particular resource.
///
///
string Serialize();
///
/// Indicates whether this resource is strongly typed. If false it means the implementer
/// is a object. This usually means that the matching serializer
/// could not be found because the resource version is unrecognised.
///
bool IsStronglyTyped { get; }
}
///
/// Extension method class
///
public static class ResourceExtensions
{
///
/// Serializes to stream.
///
/// The res.
///
public static Stream SerializeToStream(this IResource res)
{
string str = res.Serialize();
return new MemoryStream(Encoding.UTF8.GetBytes(str));
}
///
/// Gets the resource type descriptor.
///
/// The res.
///
public static ResourceTypeDescriptor GetResourceTypeDescriptor(this IResource res)
{
return new ResourceTypeDescriptor(res.ResourceType, res.ResourceVersion.ToString());
}
}
}