Table of Contents

Class Property

Namespace
NMF.Interop.Legacy.Cmof
Assembly
NMF.UMLInterop.dll

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

IAssociation

Children

Gets the child model elements of this model element

public override IEnumerableExpression<IModelElement> Children { get; }

Property Value

IEnumerableExpression<IModelElement>

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

IClass

ClassInstance

Gets the Class model for this type

public static IClass ClassInstance { get; }

Property Value

IClass

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

IDataType

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

string

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

bool

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

bool

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

bool

IsID

The isID property

[TypeConverter(typeof(LowercaseBooleanConverter))]
[XmlElementName("isID")]
[XmlAttribute(true)]
public bool IsID { get; set; }

Property Value

bool

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

bool

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

IAssociation

RedefinedProperty

References the properties that are redefined by this property. Subsets RedefinableElement::redefinedElement.

[XmlElementName("redefinedProperty")]
[XmlAttribute(true)]
public ISetExpression<IProperty> RedefinedProperty { get; }

Property Value

ISetExpression<IProperty>

ReferencedElements

Gets the referenced model elements of this model element

public override IEnumerableExpression<IModelElement> ReferencedElements { get; }

Property Value

IEnumerableExpression<IModelElement>

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

ISetExpression<IProperty>

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

diagnostics object
context object

Returns

bool

GetAttributeValue(string, int)

Resolves the given attribute name

protected override object GetAttributeValue(string attribute, int index)

Parameters

attribute string

The requested attribute name

index int

The index of this attribute

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

IClass

GetCollectionForFeature(string)

Gets the Model element collection for the given feature

protected override IList GetCollectionForFeature(string feature)

Parameters

feature string

The 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 string

The 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 string

The 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

reference string

The requested reference name

index int

The index of this reference

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

IProperty

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

bool

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

diagnostics object
context object

Returns

bool

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

diagnostics object
context object

Returns

bool

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

diagnostics object
context object

Returns

bool

SetFeature(string, object)

Sets a value to the given feature

protected override void SetFeature(string feature, object value)

Parameters

feature string

The requested feature

value object

The value that should be set to that feature

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

ISetExpression<IClassifier>

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

diagnostics object
context object

Returns

bool

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)

Parameters

diagnostics object
context object

Returns

bool