|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="RedirectTypeAttribute.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Attribute that can be used to redirect types to other types to be able to rename / move property types.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
namespace Catel.Runtime.Serialization
{
/// <summary>
/// Attribute that can be used to redirect types to other types to be able to rename / move property types.
/// </summary>
/// <remarks>
/// This attribute should be appended to the property definition.
/// <para />
/// In case this attribute is used on a field or property, the <see cref="NewAssemblyName"/> and
/// <see cref="NewTypeName"/> are mandatory. In all other cases, the type and assembly will be
/// loaded automatically.
/// </remarks>
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
public class RedirectTypeAttribute : Attribute
{
#region Variables
#endregion
#region Constructor & destructor
/// <summary>
/// Initializes a new instance of the <see cref="RedirectTypeAttribute"/> class.
/// </summary>
/// <param name="originalAssemblyName">Original assembly location..</param>
/// <param name="originalTypeName">Original type name.</param>
public RedirectTypeAttribute(string originalAssemblyName, string originalTypeName)
{
OriginalAssemblyName = originalAssemblyName;
OriginalTypeName = originalTypeName;
}
#endregion
#region Properties
/// <summary>
/// Gets the original assembly name.
/// </summary>
public string OriginalAssemblyName { get; private set; }
/// <summary>
/// Gets or sets the new assembly name.
/// </summary>
/// <remarks>
/// Leave empty if the assembly name is unchanged.
/// </remarks>
public string NewAssemblyName { get; set; }
/// <summary>
/// Gets the original type name.
/// </summary>
/// <remarks>
/// List or Array types should be postfixed with a [[]].
/// </remarks>
public string OriginalTypeName { get; private set; }
/// <summary>
/// Gets or sets the new type name.
/// </summary>
/// <remarks>
/// Leave empty if the type name is unchanged.
/// <para />
/// List or Array types should be postfixed with a [[]].
/// </remarks>
public string NewTypeName { get; set; }
/// <summary>
/// Gets the original type.
/// </summary>
public string OriginalType
{
get { return TypeHelper.FormatType(OriginalAssemblyName, OriginalTypeName); }
}
/// <summary>
/// Gets the new type that should be loaded.
/// </summary>
public string TypeToLoad
{
get
{
string assemblyToLoad = string.IsNullOrEmpty(NewAssemblyName) ? OriginalAssemblyName : NewAssemblyName;
string typeToLoad = string.IsNullOrEmpty(NewTypeName) ? OriginalTypeName : NewTypeName;
return TypeHelper.FormatType(assemblyToLoad, typeToLoad);
}
}
#endregion
#region Methods
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.