Class Property
Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association.
Property is indirectly a subclass of Constructs::TypedElement. The range of valid values represented by the property can be controlled by setting the property's type. A property is a typed element that represents an attribute of a class.
[AlternativeNamespace("http://schema.omg.org/spec/mof/2.0/emof.xmi")]
[XmlNamespace("http://schema.omg.org/spec/MOF/2.0/cmof.xml")]
[XmlNamespacePrefix("cmof")]
[ModelRepresentationClass("http://schema.omg.org/spec/MOF/2.0/cmof.xml#//Property")]
public class Property : StructuralFeature, IProperty, IStructuralFeature, ITypedElement, IMultiplicityElement, IFeature, IRedefinableElement, INamedElement, IElement, IModelElement, INotifyPropertyChanged, INotifyPropertyChanging
- Inheritance
-
Property
- Implements
- Inherited Members
Constructors
Property()
Creates a new instance
public Property()
Properties
Association
References the association of which this property is a member, if any.
[XmlElementName("association")]
[XmlAttribute(true)]
[XmlOpposite("memberEnd")]
public IAssociation Association { get; set; }
Property Value
Children
Gets the child model elements of this model element
public override IEnumerableExpression<IModelElement> Children { get; }
Property Value
Class
The class that owns the property, and of which the property is an attribute.
[Browsable(false)]
[XmlElementName("class")]
[XmlAttribute(true)]
[XmlOpposite("ownedAttribute")]
public IClass Class { get; set; }
Property Value
ClassInstance
Gets the Class model for this type
public static IClass ClassInstance { get; }
Property Value
Datatype
The DataType that owns this Operation. Subsets NamedElement::namespace, Feature::featuringClassifier, and RedefinableElement::redefinitionContext.
[Browsable(false)]
[XmlElementName("datatype")]
[XmlAttribute(true)]
[XmlOpposite("ownedAttribute")]
public IDataType Datatype { get; set; }
Property Value
Default
Specifies a String that represents a value to be used when no argument is supplied for the Property. A string that is evaluated to give a default value for the attribute when an object of the owning class is instantiated.
[XmlElementName("default")]
[XmlAttribute(true)]
public string Default { get; set; }
Property Value
IsComposite
If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. The default value is false.
[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isComposite")]
[XmlAttribute(true)]
public bool IsComposite { get; set; }
Property Value
IsDerived
If isDerived is true, the value of the attribute is derived from information elsewhere. The default value is false.
[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isDerived")]
[XmlAttribute(true)]
public bool IsDerived { get; set; }
Property Value
IsDerivedUnion
Specifies whether the property is derived as the union of all of the properties that are constrained to subset it. The default value is false.
[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isDerivedUnion")]
[XmlAttribute(true)]
public bool IsDerivedUnion { get; set; }
Property Value
IsID
The isID property
[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isID")]
[XmlAttribute(true)]
public bool IsID { get; set; }
Property Value
IsReadOnly
This redefines the corresponding attribute in Basic::Property and Abstractions::StructuralFeature. The default value is false. If isReadOnly is true, the attribute may not be written to after initialization. The default value is false.
[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isReadOnly")]
[XmlAttribute(true)]
public bool IsReadOnly { get; set; }
Property Value
OwningAssociation
References the owning association of this property, if any. Subsets Property::association, NamedElement::namespace, and Feature::featuringClassifier.
[Browsable(false)]
[XmlElementName("owningAssociation")]
[XmlAttribute(true)]
[XmlOpposite("ownedEnd")]
public IAssociation OwningAssociation { get; set; }
Property Value
RedefinedProperty
References the properties that are redefined by this property. Subsets RedefinableElement::redefinedElement.
[XmlElementName("redefinedProperty")]
[XmlAttribute(true)]
public ISetExpression<IProperty> RedefinedProperty { get; }
Property Value
ReferencedElements
Gets the referenced model elements of this model element
public override IEnumerableExpression<IModelElement> ReferencedElements { get; }
Property Value
SubsettedProperty
References the properties of which this property is constrained to be a subset.
[XmlElementName("subsettedProperty")]
[XmlAttribute(true)]
public ISetExpression<IProperty> SubsettedProperty { get; }
Property Value
Methods
Derived_union_is_derived(object, object)
A derived union is derived. isDerivedUnion implies isDerived
public bool Derived_union_is_derived(object diagnostics, object context)
Parameters
Returns
GetAttributeValue(string, int)
Resolves the given attribute name
protected override object GetAttributeValue(string attribute, int index)
Parameters
Returns
- object
The attribute value or null if it could not be found
GetClass()
Gets the Class for this model element
public override IClass GetClass()
Returns
GetCollectionForFeature(string)
Gets the Model element collection for the given feature
protected override IList GetCollectionForFeature(string feature)
Parameters
feature
stringThe requested feature
Returns
- IList
A non-generic list of elements
GetExpressionForAttribute(string)
Gets the property expression for the given attribute
protected override INotifyExpression<object> GetExpressionForAttribute(string attribute)
Parameters
attribute
stringThe requested attribute in upper case
Returns
- INotifyExpression<object>
An incremental property expression
GetExpressionForReference(string)
Gets the property expression for the given reference
protected override INotifyExpression<IModelElement> GetExpressionForReference(string reference)
Parameters
reference
stringThe requested reference in upper case
Returns
- INotifyExpression<IModelElement>
An incremental property expression
GetModelElementForReference(string, int)
Resolves the given URI to a child model element
protected override IModelElement GetModelElementForReference(string reference, int index)
Parameters
Returns
- IModelElement
The model element or null if it could not be found
GetOpposite()
If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end. result = if owningAssociation->notEmpty() and association.memberEnd->size() = 2 then let otherEnd = (association.memberEnd - self)->any() in if otherEnd.owningAssociation->notEmpty then otherEnd else Set{} endif else Set {} endif
public IProperty GetOpposite()
Returns
IsNavigable()
The query isNavigable indicates whether it is possible to navigate across the property. result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self)
public bool IsNavigable()
Returns
Multiplicity_of_composite(object, object)
A multiplicity of a composite aggregation must not have an upper bound greater than 1. isComposite implies (upperBound()->isEmpty() or upperBound() <= 1)
public bool Multiplicity_of_composite(object diagnostics, object context)
Parameters
Returns
Navigable_property_redefinition(object, object)
A navigable property can only be redefined or subsetted by a navigable property. (self.subsettedProperty->exists(sp | sp.isNavigable()) implies self.isNavigable()) and (self.redefinedProperty->exists(rp | rp.isNavigable()) implies self.isNavigable())
public bool Navigable_property_redefinition(object diagnostics, object context)
Parameters
Returns
Navigable_readonly(object, object)
Only a navigable property can be marked as readOnly. isReadOnly implies isNavigable()
public bool Navigable_readonly(object diagnostics, object context)
Parameters
Returns
SetFeature(string, object)
Sets a value to the given feature
protected override void SetFeature(string feature, object value)
Parameters
SubsettingContext()
The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends. result = if association->notEmpty() then association.endType-type else if classifier->notEmpty then Set{classifier} else Set{} endif endif
public ISetExpression<IClassifier> SubsettingContext()
Returns
Subsetting_context(object, object)
Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property. self.subsettedProperty->notEmpty() implies (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc | self.subsettedProperty->forAll(sp | sp.subsettingContext()->exists(c | sc.conformsTo(c)))))
public bool Subsetting_context(object diagnostics, object context)
Parameters
Returns
Subsetting_rules(object, object)
A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less. self.subsettedProperty->forAll(sp | self.type.conformsTo(sp.type) and ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies self.upperBound()<=sp.upperBound() ))
public bool Subsetting_rules(object diagnostics, object context)