Пример #1
0
 public ASN1SequenceOfMetadata(String name, bool isSetOf, Type itemClass, ICustomAttributeProvider seqFieldAnnotatedElem)
     : base(name)
 {
     this.isSetOf = isSetOf;
     this.itemClass = itemClass;
     Type paramType = itemClass.GetGenericArguments()[0];
     itemClassMetadata = new ASN1PreparedElementData(paramType);
     if (itemClassMetadata.TypeMetadata != null)
         itemClassMetadata.TypeMetadata.setParentAnnotated(seqFieldAnnotatedElem);
 }
Пример #2
0
 public void setupValueField(Type objClass)
 {
     try
     {
         valueField = objClass.GetProperty("Value"); //getDeclaredField("value");
         valueFieldMeta = new ASN1PreparedElementData(objClass, valueField);
     }
     catch (Exception)
     {
     }
 }
Пример #3
0
        private void setupConstructed(Type objectClass)
        {
            int count = 0;

            PropertyInfo[] srcFields = null;
            if (typeMeta != null && typeMeta is ASN1SequenceMetadata && ((ASN1SequenceMetadata)typeMeta).IsSet)
            {
                SortedList <int, PropertyInfo> fieldOrder = CoderUtils.getSetOrder(objectClass);
                srcFields = new PropertyInfo[fieldOrder.Count];
                fieldOrder.Values.CopyTo(srcFields, 0);
                count = srcFields.Length;
            }
            else
            {
                srcFields = objectClass.GetProperties(); //objectClass.getDeclaredFields();
                foreach (PropertyInfo field in srcFields)
                {
                    if (!field.PropertyType.Equals(typeof(IASN1PreparedElementData)))
                    {
                        count++;
                    }
                }
            }

            properties         = new PropertyInfo[count];
            propertiesMetadata = new ASN1PreparedElementData[count];
            int idx = 0;

            foreach (PropertyInfo field in srcFields)
            {
                if (!field.PropertyType.Equals(typeof(IASN1PreparedElementData)))
                {
                    properties[idx]         = field;
                    propertiesMetadata[idx] = new ASN1PreparedElementData(objectClass, field);

                    if (properties[idx].Name.Equals("Value"))
                    {
                        setValueField(field, propertiesMetadata[idx]);
                    }
                    idx++;
                }
            }
        }
Пример #4
0
 public void setValueField(PropertyInfo valueProperty, ASN1PreparedElementData valuePropertyMeta)
 {
     this.valueProperty = valueProperty;
     valueMetadata = valuePropertyMeta;
 }
Пример #5
0
        private void setupConstructed(Type objectClass)
        {
            int count = 0;
            PropertyInfo[] srcFields = null;
            if (typeMeta != null && typeMeta is ASN1SequenceMetadata && ((ASN1SequenceMetadata)typeMeta).IsSet)
            {
                SortedList<int, PropertyInfo> fieldOrder = CoderUtils.getSetOrder(objectClass);
                srcFields = new PropertyInfo[fieldOrder.Count];
                fieldOrder.Values.CopyTo(srcFields, 0);
                count = srcFields.Length;
            }
            else
            {
                srcFields = objectClass.GetProperties(); //objectClass.getDeclaredFields();
                foreach (PropertyInfo field in srcFields)
                {
                    if (!field.PropertyType.Equals(typeof(IASN1PreparedElementData)))
                    {
                        count++;
                    }
                }
            }

            properties = new PropertyInfo[count];
            propertiesMetadata = new ASN1PreparedElementData[count];
            int idx = 0;
            foreach (PropertyInfo field in srcFields)
            {
                if (!field.PropertyType.Equals(typeof(IASN1PreparedElementData)))
                {
                    properties[idx] = field;
                    propertiesMetadata[idx] = new ASN1PreparedElementData(objectClass, field);

                    if (properties[idx].Name.Equals("Value"))
                    {
                        setValueField(field, propertiesMetadata[idx]);
                    }
                    idx++;
                }
            }
        }
Пример #6
0
 public void setValueField(PropertyInfo valueProperty, ASN1PreparedElementData valuePropertyMeta)
 {
     this.valueProperty = valueProperty;
     valueMetadata      = valuePropertyMeta;
 }