コード例 #1
0
        public void AddReferencableObject(String name, ProcessBlockImpl scope, Type type, Object referencableObject)
        {
            ReferencableObject referenceType = new ReferencableObject(scope, type);
            IDictionary        referencables = (IDictionary)_referencableObjects[referenceType];

            if (referencables == null)
            {
                referencables = new Hashtable();
                _referencableObjects[referenceType] = referencables;
            }
            referencables[name] = referencableObject;
        }
コード例 #2
0
        public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }

            ReferencableObject refObject = obj as ReferencableObject;

            if (refObject == null)
            {
                return(false);
            }

            return(refObject.Type.Equals(this.Type) &&
                   refObject.Scope.Equals(this.Scope));
        }
コード例 #3
0
        private Object FindInScope(UnresolvedReference unresolvedReference, ProcessBlockImpl scope)
        {
            Object referencedObject = null;

            if (scope != null)
            {
                ReferencableObject referenceType = new ReferencableObject(scope, unresolvedReference.DestinationType);

                IDictionary referencables = (IDictionary)_referencableObjects[referenceType];

                if ((referencables != null) && (referencables.Contains(unresolvedReference.DestinationName)))
                {
                    referencedObject = referencables[unresolvedReference.DestinationName];
                }
                else
                {
                    referencedObject = FindInScope(unresolvedReference, scope.ParentBlock);
                }
            }

            return(referencedObject);
        }
コード例 #4
0
		private Object FindInScope(UnresolvedReference unresolvedReference, ProcessBlockImpl scope)
		{
			Object referencedObject = null;

			if (scope != null)
			{
				ReferencableObject referenceType = new ReferencableObject(scope, unresolvedReference.DestinationType);

				IDictionary referencables = (IDictionary) _referencableObjects[referenceType];

				if ((referencables != null) && (referencables.Contains(unresolvedReference.DestinationName)))
				{
					referencedObject = referencables[unresolvedReference.DestinationName];
				}
				else
				{
					referencedObject = FindInScope(unresolvedReference, scope.ParentBlock);
				}
			}

			return referencedObject;
		}
コード例 #5
0
		public void AddReferencableObject(String name, ProcessBlockImpl scope, Type type, Object referencableObject)
		{
			ReferencableObject referenceType = new ReferencableObject(scope, type);
			IDictionary referencables = (IDictionary) _referencableObjects[referenceType];
			if (referencables == null)
			{
				referencables = new Hashtable();
				_referencableObjects[referenceType] = referencables;
			}
			referencables[name] = referencableObject;
		}