|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="PropertyData.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Object that contains all the property data that is used by the <see cref="DataObjectBase{T}" /> class.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Xml.Serialization;
namespace Catel.Data
{
/// <summary>
/// Object that contains all the property data that is used by the <see cref="DataObjectBase{T}"/> class.
/// </summary>
public class PropertyData
{
#region Variables
/// <summary>
/// Type of the property.
/// </summary>
#if !SILVERLIGHT
[field: NonSerialized]
#endif
private Type _type;
#endregion
#region Constructor & destructor
/// <summary>
/// Initializes a new instance of the <see cref="PropertyData"/> class.
/// </summary>
/// <param name="name">Name of the property.</param>
/// <param name="type">Type of the property.</param>
/// <param name="defaultValue">Default value of the property.</param>
/// <param name="setParent">if set to <c>true</c>, the parent of the property will be set.</param>
/// <param name="propertyChangedEventHandler">The property changed event handler.</param>
/// <param name="isSerializable">if set to <c>true</c>, the property is serializable.</param>
/// <param name="includeInSerialization">if set to <c>true</c>, the property should be included in the serialization.</param>
/// <param name="isDataObjectBaseProperty">if set to <c>true</c>, the property is declared by the <see cref="DataObjectBase"/>.</param>
internal PropertyData(string name, Type type, object defaultValue, bool setParent, EventHandler<PropertyChangedWithSenderEventArgs> propertyChangedEventHandler,
bool isSerializable, bool includeInSerialization, bool isDataObjectBaseProperty)
{
Name = name;
Type = type;
DefaultValue = defaultValue;
SetParent = setParent;
PropertyChangedEventHandler = propertyChangedEventHandler;
IsSerializable = isSerializable;
IncludeInSerialization = includeInSerialization;
IsDataObjectBaseProperty = isDataObjectBaseProperty;
}
#endregion
#region Properties
/// <summary>
/// Gets the name of the property.
/// </summary>
public string Name { get; private set; }
/// <summary>
/// Gets the type of the property.
/// </summary>
[XmlIgnore]
public Type Type
{
get { return _type ?? typeof(object); }
private set { _type = value; }
}
/// <summary>
/// Gets or sets the default value of the property.
/// </summary>
[XmlIgnore]
private object DefaultValue { get; set; }
/// <summary>
/// Gets a value indicating whether to set the parent after creating or deserializing the property.
/// </summary>
/// <value><c>true</c> if the parent of the should be set after creating or deserializing the property; otherwise, <c>false</c>.</value>
public bool SetParent { get; private set; }
/// <summary>
/// Gets a value indicating the property changed event handler.
/// </summary>
/// <value>The property changed event handler.</value>
[XmlIgnore]
internal EventHandler<PropertyChangedWithSenderEventArgs> PropertyChangedEventHandler { get; private set; }
/// <summary>
/// Gets a value indicating whether this property is serializable.
/// </summary>
/// <value>
/// <c>true</c> if this property is serializable; otherwise, <c>false</c>.
/// </value>
[XmlIgnore]
public bool IsSerializable { get; private set; }
/// <summary>
/// Gets a value indicating whether whether the property should be included in the serialization.
/// </summary>
/// <value>
/// <c>true</c> if the property should be included in the serialization; otherwise, <c>false</c>.
/// </value>
[XmlIgnore]
public bool IncludeInSerialization { get; private set; }
/// <summary>
/// Gets a value indicating whether the property is declared by the <see cref="DataObjectBase"/>.
/// </summary>
/// <value>
/// <c>true</c> if the property is declared by the <see cref="DataObjectBase"/>; otherwise, <c>false</c>.
/// </value>
[XmlIgnore]
public bool IsDataObjectBaseProperty { get; private set; }
#endregion
#region Methods
/// <summary>
/// Returns the default value of the property.
/// </summary>
/// <returns>Default value of the property.</returns>
public object GetDefaultValue()
{
return DefaultValue;
}
/// <summary>
/// Returns the typed default value of the property.
/// </summary>
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <returns>Default value of the property.</returns>
public TValue GetDefaultValue<TValue>()
{
return ((DefaultValue != null) && (DefaultValue is TValue)) ? (TValue)DefaultValue : default(TValue);
}
#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.