Example #1
0
 public void Allow(object instance, PropertyComparator customComparator)
 {
     if (!_customInstancePropertyComparisons.ContainsKey(instance))
     {
         _customInstancePropertyComparisons.Add(instance, new List <PropertyComparator>());
     }
     _customInstancePropertyComparisons[instance].Add(customComparator);
 }
Example #2
0
 private bool IsAllowed(IEnumerable <PropertyComparator> comparators, GraphNode leftNode, GraphNode rightNode)
 {
     if (comparators.Select(c => c.Property).Contains(rightNode.Property))
     {
         PropertyComparator comparator =
             comparators.First(c => c.Property == rightNode.Property);
         return((bool)comparator.Comparator.DynamicInvoke(leftNode.ObjectValue, rightNode.ObjectValue));
     }
     return(false);
 }
Example #3
0
 private void CollectMethods(Type type)
 {
     foreach (MethodInfo m in type.GetMethods())
     {
         MethodComparator cmp = new MethodComparator(m);
         if (!mServiceMethods.Contains(cmp) && !mClientMethods.Contains(cmp) && !mNeutralMethods.Contains(cmp))
         {
             // még nem detektált metódus
             OperationContractAttribute ocAnnotation = TypeHelper.GetAttribute <OperationContractAttribute>(m);
             if (ocAnnotation == null)
             {
                 if (mWellKnownObjectMode == WellKnownObjectModeEnum.PerSession && typeof(IDisposable).IsAssignableFrom(type) && m.Name.Equals("Dispose"))
                 {
                     // perSession módban IDisposable-t nem dolgozunk fel, mert már implementálva van a ProxyBase-ben
                 }
                 else if (!m.IsSpecialName)
                 {
                     mNeutralMethods.Add(cmp); // a contract-ban nem vesz részt, de az interface-en valahol rajta van
                 }
             }
             else if (ocAnnotation.Direction.Equals(OperationDirectionEnum.ServerSide))
             {
                 mServiceMethods.Add(cmp);
             }
             else
             {
                 mClientMethods.Add(cmp);
             }
         }
     }
     foreach (PropertyInfo pi in type.GetProperties())
     {
         PropertyComparator pc = new PropertyComparator(pi);
         if (!mNeutralProperties.Contains(pc))
         {
             mNeutralProperties.Add(pc);
         }
     }
     foreach (EventInfo ei in type.GetEvents())
     {
         mNeutralEvents.Add(new EventComparator(ei));
     }
     if (type.GetInterfaces().Length > 0)
     {
         foreach (Type cls in type.GetInterfaces())
         {
             CollectMethods(cls);
         }
     }
 }
Example #4
0
        /// <summary>
        /// Writes the abstract properties.
        /// </summary>
        /// <param name="prs">The property comparators.</param>
        /// <param name="stream">The stream.</param>
        public static void WriteAbstractProperties(IList <PropertyComparator> prs, Stream stream)
        {
            if (prs == null)
            {
                ThrowHelper.ThrowArgumentNullException("prs");
            }
            if (stream == null)
            {
                ThrowHelper.ThrowArgumentNullException("stream");
            }

            IEnumerator <PropertyComparator> iterator = prs.GetEnumerator();

            while (iterator.MoveNext())
            {
                PropertyComparator pc = iterator.Current;
                Write(stream, NEW_LINE_BYTES);
                Write(stream, CODE_PUBLIC_METHOD);
                Write(stream, CODE_ABSTRACT_METHOD);
                Write(stream, pc.PropertyInfo.PropertyType.FullName);
                Write(stream, SPACE);
                Write(stream, pc.PropertyInfo.Name);
                Write(stream, NEW_LINE_BYTES);
                Write(stream, TAB_SPACE);
                Write(stream, TAB_SPACE);
                Write(stream, LEFT_CURLY_BRACE);
                if (pc.GetMethod != null)
                {
                    Write(stream, NEW_LINE_BYTES);
                    Write(stream, TAB_SPACE);
                    Write(stream, TAB_SPACE);
                    Write(stream, TAB_SPACE);
                    Write(stream, "get;");
                }
                if (pc.SetMethod != null)
                {
                    Write(stream, NEW_LINE_BYTES);
                    Write(stream, TAB_SPACE);
                    Write(stream, TAB_SPACE);
                    Write(stream, TAB_SPACE);
                    Write(stream, "set;");
                }
                Write(stream, NEW_LINE_BYTES);
                Write(stream, TAB_SPACE);
                Write(stream, TAB_SPACE);
                Write(stream, RIGHT_CURLY_BRACE);
                Write(stream, NEW_LINE_BYTES);
            }
        }
Example #5
0
 public void AllowOnType(PropertyComparator customComparator)
 {
     _customTypePropertyComparisons.Add(customComparator);
 }