Esempio n. 1
0
        public void DeriveConcreteMethodTypes(HashSet <MethodType> sharedMethodTypes)
        {
            sharedMethodTypes.Clear();
            var removedMethodTypes = sharedMethodTypes;

            removedMethodTypes.UnionWith(this.concreteMethodTypeByMethodType.Keys);

            foreach (var methodType in this.MethodTypes)
            {
                removedMethodTypes.Remove(methodType);

                ConcreteMethodType concreteMethodType;
                if (!this.concreteMethodTypeByMethodType.TryGetValue(methodType, out concreteMethodType))
                {
                    concreteMethodType = new ConcreteMethodType(this, methodType);
                    this.concreteMethodTypeByMethodType[methodType] = concreteMethodType;
                }
            }

            foreach (var methodType in removedMethodTypes)
            {
                this.concreteMethodTypeByMethodType.Remove(methodType);
            }

            this.concreteMethodTypes = this.concreteMethodTypeByMethodType.Values.ToArray();
        }
Esempio n. 2
0
 public MethodInvocation(Class @class, MethodType methodType)
 {
     this.concreteMethodType = @class.ConcreteMethodTypeByMethodType[methodType];
 }
 public MethodInvocation(Class @class, MethodType methodType)
 {
     this.concreteMethodType = @class.ConcreteMethodTypeByMethodType[methodType];
 }
Esempio n. 4
0
        public void DeriveConcreteMethodTypes(HashSet<MethodType> sharedMethodTypes)
        {
            sharedMethodTypes.Clear();
            var removedMethodTypes = sharedMethodTypes;
            removedMethodTypes.UnionWith(this.concreteMethodTypeByMethodType.Keys);

            foreach (var methodType in this.MethodTypes)
            {
                removedMethodTypes.Remove(methodType);

                ConcreteMethodType concreteMethodType;
                if (!this.concreteMethodTypeByMethodType.TryGetValue(methodType, out concreteMethodType))
                {
                    concreteMethodType = new ConcreteMethodType(this, methodType);
                    this.concreteMethodTypeByMethodType[methodType] = concreteMethodType;
                }
            }

            foreach (var methodType in removedMethodTypes)
            {
                this.concreteMethodTypeByMethodType.Remove(methodType);
            }

            this.concreteMethodTypes = this.concreteMethodTypeByMethodType.Values.ToArray();
        }