using System;
using System.ComponentModel;
using System.Runtime.Serialization;
using AnticipatingMinds.Genesis.CodeDOM;
namespace AnticipatingMinds.Genesis.KnowledgeManagement{
/// <summary>
/// Summary description for FieldApplicabilityScope.
/// </summary>
[Serializable]
public class FieldApplicabilityScope : TypeMemberApplicabilityScope, ISerializable,ICloneable
{
#region Instance constructors
public FieldApplicabilityScope():base()
{
}
public FieldApplicabilityScope(FieldApplicabilityScope fieldApplicabilityScope) : base(fieldApplicabilityScope)
{
if(fieldApplicabilityScope.FieldType != null)
FieldType = ((ICloneable)fieldApplicabilityScope.FieldType).Clone() as TypeReferenceApplicabilityScope;
}
#endregion Instance constructors
#region ICloneable Members
public override object Clone()
{
return new FieldApplicabilityScope(this);
}
#endregion
#region ISerializable Implementation
private FieldApplicabilityScope(SerializationInfo info, StreamingContext context) : base(info,context)
{
FieldType = info.GetValue("FieldType",typeof(TypeReferenceApplicabilityScope)) as TypeReferenceApplicabilityScope;
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info,context);
info.AddValue("FieldType",FieldType,typeof(TypeReferenceApplicabilityScope));
}
#endregion }
#region Public instance properties
[Category("Behavior")]
[System.ComponentModel.Editor(typeof(TypeReferenceScopeEditor),typeof(System.Drawing.Design.UITypeEditor))]
[TypeConverter(typeof(ApplicabilityScopeTypeConverter))]
[DefaultValue(null)]
[Description("The type of field being declared.")]
public TypeReferenceApplicabilityScope FieldType
{
get
{
return fieldType;
}
set
{
fieldType = value;
}
}
public override string Title
{
get
{
return "Field Declaration";
}
}
#endregion Public instance properties
#region Protected instance methods
protected override bool DoesElementMatchScopeConditions(CodeElement codeElement)
{
if(!(codeElement is CodeTypeFieldDeclaration))
return false;
if(FieldType != null)
if(!FieldType.IsElementInScope((codeElement as CodeTypeFieldDeclaration).DeclarationType))
return false;
return base.DoesElementMatchScopeConditions(codeElement);
}
#endregion Protected instance methods
#region Private instance fields
TypeReferenceApplicabilityScope fieldType = null;
#endregion Private instance fields
}
}
|