Exemple #1
0
        private IEntity FindEntityInRelevantAssemblies(string navigateTo, IEnumerable <LoadedAssembly> relevantAssemblies)
        {
            ITypeReference   typeRef   = null;
            IMemberReference memberRef = null;

            if (navigateTo.StartsWith("T:", StringComparison.Ordinal))
            {
                typeRef = IdStringProvider.ParseTypeName(navigateTo);
            }
            else
            {
                memberRef = IdStringProvider.ParseMemberIdString(navigateTo);
                typeRef   = memberRef.DeclaringTypeReference;
            }
            foreach (LoadedAssembly asm in relevantAssemblies.ToList())
            {
                var module = asm.GetPEFileOrNull();
                if (CanResolveTypeInPEFile(module, typeRef, out var typeHandle))
                {
                    ICompilation compilation = typeHandle.Kind == HandleKind.ExportedType
                                                ? new DecompilerTypeSystem(module, module.GetAssemblyResolver())
                                                : new SimpleCompilation(module, MinimalCorlib.Instance);
                    return(memberRef == null
                                                ? typeRef.Resolve(new SimpleTypeResolveContext(compilation)) as ITypeDefinition
                                                : (IEntity)memberRef.Resolve(new SimpleTypeResolveContext(compilation)));
                }
            }
            return(null);
        }
Exemple #2
0
        public int GetMemberIndex(IMemberReference reference)
        {
            int classIndex       = GetClassIndex(reference.DeclaringClass);
            int nameAndTypeIndex = GetNameAndTypeIndex(reference.Name, reference.Descriptor);

            MemberRefInfo memberRefInfo;

            switch (reference)
            {
            case IField _:
                memberRefInfo = new FieldRefInfo((ushort)classIndex, (ushort)nameAndTypeIndex);
                break;

            case IMethod _:
                memberRefInfo = new MethodRefInfo((ushort)classIndex, (ushort)nameAndTypeIndex);
                break;

            default:
                throw new NotSupportedException();
            }

            if (!_memberRefInfos.TryGetValue(memberRefInfo, out int index))
            {
                index = AddConstant(memberRefInfo);
                _memberRefInfos.Add(memberRefInfo, index);
            }

            return(index);
        }
Exemple #3
0
        public static string getFunctionUniqueSignatureFromMethodReference(IMemberReference methodReference)
        {
            try
            {
                if (methodReference.DeclaringType.Module != null)
                {
                    if (methodReference.DeclaringType.Scope.Name == methodReference.DeclaringType.Module.Name)
                    {
                        return(String.Format("{0}!{1}", methodReference.DeclaringType.Module.Assembly.Name, methodReference)); // use the module name if the scope matches
                    }
                    return(String.Format("{0}!{1}", methodReference.DeclaringType.Scope, methodReference));                    // use the scope name for external methods (like mscorlib.dll)
                }

                return(String.Format("{0}!{1}", "[NullModule]", methodReference));   // when there is no module info
                //  methodReference.DeclaringType.Scope.MetadataToken.

                /*return String.Format("{0}!{1}",
                 *  ((methodReference.DeclaringType.Module != null) ? methodReference.DeclaringType.Module.Name : "[NullModule]")
                 *  , methodReference);                */
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, "in CirFactoryUtils.getFunctionUniqueSignatureFromMethodReference", true);
            }
            return(null);
        }
Exemple #4
0
        private void ResolveMemberRefToken(IMemberReference entity)
        {
            var row = CreateMemberRefRow(entity, _metadata);
            var rid = _metadata.MemberRefTable.Add(row);

            _token = new MetadataToken(MetadataTokenType.MemberRef, rid);
        }
		public IEnumerable<ExceptionSources> this [IMemberReference member] {
			get {
				if (member == null)
					throw new ArgumentNullException ("member");
				IMemberReference memberDef = member.Resolve ();
				if (memberDef == null) {
					ArrayType array = member.DeclaringType as ArrayType;
					if (array != null && array.Rank > 1) {
						// Multi-dimensional array; the member is runtime generated, 
						// doesn't "really" exist (in a form that we can resolve),
						// so we can't do anything further.
						return new ExceptionSources[0];
					}
					throw new NotSupportedException (string.Format (
								"Unable to resolve member {0}::{1}.",
								member.DeclaringType.FullName, member.Name));
				}
				string memberDecl = xdoc.GetDeclaration (member.Resolve ());
				Dictionary<string, ExceptionSources> e;
				if (!db.TryGetValue (memberDecl, out e)) {
					e = new Dictionary<string, ExceptionSources> ();
					var bodies = GetMethodBodies (member);
					foreach (var body in bodies) {
						if (body == null)
							continue;
						FillExceptions (body, e);
					}
					db.Add (memberDecl, e);
				}
				return e.Values;
			}
		}
        private void SetCurrentReference()
        {
            if (MainModel == null)
            {
                return;
            }

            IMemberReference memberReference = MainModel.CurrentReference;

            // Select the correct node in the tree
            TreeNode node = FindNode(memberReference);

            if (node == null)
            {
                return;
            }

            node.EnsureVisible();
            _assembliesTree.SelectedNode = node;

            // Set the display context content
            if (memberReference is IResource)
            {
                SetResource((IResource)memberReference);
            }
            else
            {
                SetCodeReference(memberReference);
            }
        }
Exemple #7
0
        /// <summary>
        /// Determines whether two callable member references are considered equal according to their signatures.
        /// </summary>
        /// <param name="reference1">The first reference to compare.</param>
        /// <param name="reference2">The second reference to compare.</param>
        /// <returns><c>True</c> if the members are considered equal, <c>False</c> otherwise.</returns>
        public bool Equals(IMemberReference reference1, IMemberReference reference2)
        {
            if (reference1 == null && reference2 == null)
            {
                return(true);
            }
            if (reference1 == null || reference2 == null)
            {
                return(false);
            }

            var callable = reference1 as ICallableMemberReference;

            if (callable != null)
            {
                return(Equals(callable, reference2 as ICallableMemberReference));
            }

            var type = reference1 as ITypeDefOrRef;

            if (type != null)
            {
                return(Equals((IMemberReference)type, reference1 as ITypeDefOrRef));
            }

            return(false);
        }
Exemple #8
0
        public void WriteReference(string text, string toolTip, Object reference)
        {
            this.writer.ApplyIndent();

            bool handled = false;

            if (reference is ITypeDeclaration)
            {
                ITypeReference tr = (ITypeReference)reference;
                if (!Utils.IsSystemType(tr.Namespace))
                {
                    WriteMetadataItem(text, (IMetadataItem)reference);
                    handled = true;
                }
            }
            else if (reference is IMemberReference && reference is IMetadataItem)
            {
                IMemberReference mr = (IMemberReference)reference;
                ITypeReference   tr = (ITypeReference)mr.DeclaringType;
                if (tr == null || (tr != null && !Utils.IsSystemType(tr.Namespace)))
                {
                    WriteMetadataItem(text, (IMetadataItem)reference);
                    handled = true;
                }
            }
            if (!handled)
            {
                this.writer.WriteColor(text, 0x006018);
            }
        }
        public IMemberReference ImportReference(IMemberReference reference)
        {
            var type = reference as ITypeDefOrRef;

            if (type != null)
            {
                return(ImportType(type));
            }

            var method = reference as MethodDefinition;

            if (method != null)
            {
                return(ImportMethod(method));
            }

            var field = reference as FieldDefinition;

            if (field != null)
            {
                return(ImportField(field));
            }

            var member = reference as MemberReference;

            if (member != null)
            {
                return(ImportMember(member));
            }

            throw new NotSupportedException("Invalid or unsupported reference.");
        }
 public AccessorOwnerMemberReference(IMemberReference accessorReference)
 {
     if (accessorReference == null)
     {
         throw new ArgumentNullException("accessorReference");
     }
     this.accessorReference = accessorReference;
 }
Exemple #11
0
 public IReadOnlyList <IMemberDefinition> MemberReferance(IMemberReference memberReferance)
 {
     // this is only sometimes a closure
     //
     return(new List <IMemberDefinition> {
         memberReferance.MemberDefinition
     });
 }
		public SpecializingMemberReference(IMemberReference memberDefinitionReference, IList<ITypeReference> classTypeArgumentReferences = null, IList<ITypeReference> methodTypeArgumentReferences = null)
		{
			if (memberDefinitionReference == null)
				throw new ArgumentNullException("memberDefinitionReference");
			this.memberDefinitionReference = memberDefinitionReference;
			this.classTypeArgumentReferences = classTypeArgumentReferences;
			this.methodTypeArgumentReferences = methodTypeArgumentReferences;
		}
Exemple #13
0
 private MemberRefRow CreateMemberRefRow(IMemberReference entity, MetadataBuilder metadata)
 {
     return(new MemberRefRow(
                metadata.ResolveToken(entity.DeclaringType),
                metadata.WriteString(entity.Name),
                metadata.WriteSignature(entity)
                ));
 }
		public ExplicitInterfaceImplementationMemberReference(ITypeReference typeReference, IMemberReference interfaceMemberReference)
		{
			if (typeReference == null)
				throw new ArgumentNullException("typeReference");
			if (interfaceMemberReference == null)
				throw new ArgumentNullException("interfaceMemberReference");
			this.typeReference = typeReference;
			this.interfaceMemberReference = interfaceMemberReference;
		}
Exemple #15
0
 public OwnedParameterReference(IMemberReference member, int index)
 {
     if (member == null)
     {
         throw new ArgumentNullException("member");
     }
     this.memberReference = member;
     this.index           = index;
 }
Exemple #16
0
 public SpecializingMemberReference(IMemberReference memberDefinitionReference, IList <ITypeReference> classTypeArgumentReferences = null, IList <ITypeReference> methodTypeArgumentReferences = null)
 {
     if (memberDefinitionReference == null)
     {
         throw new ArgumentNullException("memberDefinitionReference");
     }
     this.memberDefinitionReference    = memberDefinitionReference;
     this.classTypeArgumentReferences  = classTypeArgumentReferences;
     this.methodTypeArgumentReferences = methodTypeArgumentReferences;
 }
		public SpecializingMemberReference(ITypeReference declaringTypeReference, IMemberReference memberDefinitionReference, IList<ITypeReference> typeArgumentReferences = null)
		{
			if (declaringTypeReference == null)
				throw new ArgumentNullException("declaringTypeReference");
			if (memberDefinitionReference == null)
				throw new ArgumentNullException("memberDefinitionReference");
			this.declaringTypeReference = declaringTypeReference;
			this.memberDefinitionReference = memberDefinitionReference;
			this.typeArgumentReferences = typeArgumentReferences;
		}
Exemple #18
0
        internal static string GetFullName(this IMemberReference reference, IHasTypeSignature signature)
        {
            var methodSignature = signature as MethodSignature;

            var parameterString = methodSignature != null
                ? "(" + methodSignature.Parameters.Select(x => x.ParameterType).GetTypeArrayString() + ")"
                : string.Empty;

            return(string.Format("{0} {1}::{2}{3}",
                                 signature.TypeSignature.FullName, reference.DeclaringType.FullName, reference.Name, parameterString));
        }
Exemple #19
0
        private static void VerifyMatching(IMemberReference original, IMemberReference expected, params IMemberReference[] fails)
        {
            Assert.IsTrue(_comparer.MatchMembers(original, expected), "The original signature did not match the expected.");
            Assert.IsTrue(_comparer.MatchMembers(expected, original), "The expected signature did not match the original.");

            foreach (var fail in fails)
            {
                Assert.IsFalse(_comparer.MatchMembers(original, fail), original + " matched " + fail.FullName);
                Assert.IsFalse(_comparer.MatchMembers(fail, original), fail.FullName + " matched " + original);
            }
        }
Exemple #20
0
        public void Back()
        {
            if (_backList.Count == 0)
            {
                return;
            }

            _forwardList.Push(CurrentReference);
            _currentReference = _backList.Pop();
            NotifyObservers(new MainModelChangeHint(MainModelChangeHint.HintType.CurrentReference));
        }
        public void ParseMemberReferenceFindTypeName()
        {
            IMemberReference memberReference = AssemblyManager.ParseMemberReference("[mscorlib]System.Text.StringBuilder");

            Assert.IsNotNull(memberReference);

            Assert.IsInstanceOf(typeof(ITypeReference), memberReference);
            ITypeReference typeReference = (ITypeReference)memberReference;

            Assert.AreEqual("System.Text", typeReference.Namespace);
            Assert.AreEqual("StringBuilder", typeReference.Name);
        }
        public void ParseMemberReferenceFindAssemblyName()
        {
            IMemberReference memberReference = AssemblyManager.ParseMemberReference("[mscorlib]");

            Assert.IsNotNull(memberReference);

            Assert.IsInstanceOf(typeof(IAssemblyReference), memberReference);
            IAssemblyReference assemblyReference = (IAssemblyReference)memberReference;

            Assert.AreEqual("mscorlib", assemblyReference.Name);
            //Assert.AreEqual(assembly, assemblyReference);
        }
Exemple #23
0
 public static StandAloneSignature GetMemberReferenceSignature(IMemberReference memberRef, MetadataBuilder metadata)
 {
     if (memberRef is MethodReference)
     {
         return(GetMethodSignature((MethodReference)memberRef, metadata));
     }
     if (memberRef is FieldReference)
     {
         return(GetFieldSignature((FieldReference)memberRef, metadata));
     }
     throw new InvalidOperationException("Can't compute signature for member reference of type: " + memberRef.GetType());
 }
Exemple #24
0
 public static MsilInstruction Create(MsilOpCode code, IMemberReference operand)
 {
     switch (code.OperandType)
     {
         case MsilOperandType.InlineField:
         case MsilOperandType.InlineMethod:
         case MsilOperandType.InlineTok:
         case MsilOperandType.InlineType:
             return new MsilInstruction(0, code, operand);
     }
     throw new ArgumentException("Opcode does not accept a member operand operand.", "code");
 }
Exemple #25
0
 public static MsilInstruction Create(MsilOpCode code, IMemberReference operand)
 {
     switch (code.OperandType)
     {
     case MsilOperandType.InlineField:
     case MsilOperandType.InlineMethod:
     case MsilOperandType.InlineTok:
     case MsilOperandType.InlineType:
         return(new MsilInstruction(0, code, operand));
     }
     throw new ArgumentException("Opcode does not accept a member operand operand.", "code");
 }
 public ExplicitInterfaceImplementationMemberReference(ITypeReference typeReference, IMemberReference interfaceMemberReference)
 {
     if (typeReference == null)
     {
         throw new ArgumentNullException("typeReference");
     }
     if (interfaceMemberReference == null)
     {
         throw new ArgumentNullException("interfaceMemberReference");
     }
     this.typeReference            = typeReference;
     this.interfaceMemberReference = interfaceMemberReference;
 }
Exemple #27
0
 private void CreateStack(AssemblyCompilerContext assemblyContext, IMemberReference method)
 {
     using (var runtime = assemblyContext.GetOutputFileWriter("stack.s"))
     {
         runtime.WriteLine(".globl _setup_stack");
         runtime.WriteLine("	.def	_setup_stack;	.scl	2;	.type	32;	.endef");
         runtime.WriteLine("_setup_stack:");
         runtime.WriteLine("	movl %esp, %ecx");
         runtime.WriteLine("	movl 4(%esp), %esp");
         runtime.WriteLine("	call _{0}", method.Name);
         runtime.WriteLine("	movl %ecx, %esp");
         runtime.WriteLine("	ret");
     }
 }
Exemple #28
0
 public SpecializingMemberReference(ITypeReference declaringTypeReference, IMemberReference memberDefinitionReference, IList <ITypeReference> typeArgumentReferences = null)
 {
     if (declaringTypeReference == null)
     {
         throw new ArgumentNullException("declaringTypeReference");
     }
     if (memberDefinitionReference == null)
     {
         throw new ArgumentNullException("memberDefinitionReference");
     }
     this.declaringTypeReference    = declaringTypeReference;
     this.memberDefinitionReference = memberDefinitionReference;
     this.typeArgumentReferences    = typeArgumentReferences;
 }
Exemple #29
0
        public virtual void Collect(IMemberReference member)
        {
            Collect(member.Name);

            if (member is FieldReference)
            {
                Collect((member as FieldReference).Owner);
            }

            if (member is MethodReference)
            {
                Collect((member as MethodReference).Owner);
            }
        }
 private ICirFunction processMemberReference(ICirData cirData, IMemberReference memberDefinition, SequencePoint sequencePoint)
 {
     switch (memberDefinition.GetType().Name)
     {
         case "MethodReference":
             return processMethodReference(cirData, (MethodReference)memberDefinition, sequencePoint);
         case "MethodDefinition":
             return processMethodDefinition(cirData, (MethodDefinition)memberDefinition, sequencePoint);
         default:
             DI.log.error("in CirFactory.processMethodMember, unsupported MethodMember: {0}", memberDefinition.GetType().Name);
             break;
     }
     return null;
 }
Exemple #31
0
 public IInterpetedOperation MemberReferance(IMemberReference codeElement)
 {
     if (backing.TryGetValue(codeElement, out var res))
     {
         return(res);
     }
     else
     {
         var op = new InterpetedMemberReferance();
         backing.Add(codeElement, op);
         op.Init(
             MemberDefinition(codeElement.MemberDefinition).CastTo <InterpetedMemberDefinition>());
         return(op);
     }
 }
Exemple #32
0
        public virtual void Collect(IMemberReference member)
        {
            Collect(member.Name);

            switch (member)
            {
            case FieldReference fieldReference:
                Collect(fieldReference.Owner);
                break;

            case MethodReference methodReference:
                Collect(methodReference.Owner);
                break;
            }
        }
Exemple #33
0
        internal static int GetColorDeclaringType(IMemberReference memberReference)
        {
            ITypeReference typeReference = memberReference.DeclaringType as ITypeReference;

            if (typeReference != null)
            {
                int color = GetColorDeclaringType(typeReference);
                if (color == ColorInformation.Hidden)
                {
                    return(color);
                }
            }

            return(GetColor(memberReference));
        }
        private ICirFunction processMemberReference(ICirData cirData, IMemberReference memberDefinition, SequencePoint sequencePoint)
        {
            switch (memberDefinition.GetType().Name)
            {
            case "MethodReference":
                return(processMethodReference(cirData, (MethodReference)memberDefinition, sequencePoint));

            case "MethodDefinition":
                return(processMethodDefinition(cirData, (MethodDefinition)memberDefinition, sequencePoint));

            default:
                DI.log.error("in CirFactory.processMethodMember, unsupported MethodMember: {0}", memberDefinition.GetType().Name);
                break;
            }
            return(null);
        }
Exemple #35
0
        private static TreeNode FindNode(IMemberReference memberReference, TreeNode parentNode)
        {
            if (parentNode == null)
            {
                return(null);
            }

            foreach (TreeNode node in parentNode.Nodes)
            {
                if (node.Tag == memberReference)
                {
                    return(node);
                }
            }

            return(null);
        }
Exemple #36
0
        private void _assembliesTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (MainModel == null)
            {
                return;
            }

            using (new WaitCursor())
            {
                IMemberReference memberReference = e.Node.Tag as IMemberReference;
                if (memberReference != null)
                {
                    MainModel.CurrentReference = memberReference;
                    return;
                }
            }
        }
        public static string getFunctionUniqueSignatureFromMethodReference(IMemberReference methodReference)
        {
            try
            {
                if (methodReference.DeclaringType.Module != null )
                {                    
                    if (methodReference.DeclaringType.Scope.Name == methodReference.DeclaringType.Module.Name)                    
                        return String.Format("{0}!{1}", methodReference.DeclaringType.Module.Assembly.Name, methodReference);        // use the module name if the scope matches                                    
                    return String.Format("{0}!{1}", methodReference.DeclaringType.Scope, methodReference);         // use the scope name for external methods (like mscorlib.dll)                                                        
                }

                return String.Format("{0}!{1}", "[NullModule]", methodReference);   // when there is no module info
                //  methodReference.DeclaringType.Scope.MetadataToken.
                /*return String.Format("{0}!{1}",
                    ((methodReference.DeclaringType.Module != null) ? methodReference.DeclaringType.Module.Name : "[NullModule]")
                    , methodReference);                */
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, "in CirFactoryUtils.getFunctionUniqueSignatureFromMethodReference",true);                
            }
            return null;
        }
Exemple #38
0
 /// <summary>
 /// Is other equal to this?
 /// </summary>
 public virtual bool Equals(IMemberReference other)
 {
     return Equals(other as MethodReference);
 }
		public OwnedParameterReference(IMemberReference member, int index)
		{
			if (member == null)
				throw new ArgumentNullException("member");
			this.memberReference = member;
			this.index = index;
		}
 public ParameterDefinitionCollection(IMemberReference container)
 {
     m_container = container;
     m_items = new ArrayList ();
 }
        private static void VerifyMatching(IMemberReference original, IMemberReference expected, params IMemberReference[] fails)
        {
            Assert.IsTrue(_comparer.MatchMembers(original, expected), "The original signature did not match the expected.");
            Assert.IsTrue(_comparer.MatchMembers(expected, original), "The expected signature did not match the original.");

            foreach (var fail in fails)
            {
                Assert.IsFalse(_comparer.MatchMembers(original, fail), original + " matched " + fail.FullName);
                Assert.IsFalse(_comparer.MatchMembers(fail, original), fail.FullName + " matched " + original);
            }
        }
		MethodBody[] GetMethodBodies (IMemberReference member)
		{
			if (member is MethodReference) {
				return new[]{ (((MethodReference) member).Resolve ()).Body };
			}
			if (member is PropertyReference) {
				PropertyDefinition prop = ((PropertyReference) member).Resolve ();
				return new[]{
					prop.GetMethod != null ? prop.GetMethod.Body : null,
					prop.SetMethod != null ? prop.SetMethod.Body : null,
				};
			}
			if (member is FieldReference)
				return new MethodBody[]{};
			if (member is EventReference) {
				EventDefinition ev = ((EventReference) member).Resolve ();
				return new[]{
					ev.AddMethod != null ? ev.AddMethod.Body : null,
					ev.InvokeMethod != null ? ev.InvokeMethod.Body : null, 
					ev.RemoveMethod != null ? ev.RemoveMethod.Body : null,
				};
			}
			throw new NotSupportedException ("Unsupported member type: " + member.GetType().FullName);
		}
 private void CreateStack(AssemblyCompilerContext assemblyContext, IMemberReference method)
 {
     using (var runtime = assemblyContext.GetOutputFileWriter("stack.s"))
     {
         runtime.WriteLine(".globl _setup_stack");
         runtime.WriteLine("	.def	_setup_stack;	.scl	2;	.type	32;	.endef");
         runtime.WriteLine("_setup_stack:");
         runtime.WriteLine("	movl %esp, %ecx");
         runtime.WriteLine("	movl 4(%esp), %esp");
         runtime.WriteLine("	call _{0}", method.Name);
         runtime.WriteLine("	movl %ecx, %esp");
         runtime.WriteLine("	ret");
     }
 }
Exemple #44
0
 /// <summary>
 /// Is other equal to this?
 /// </summary>
 public override bool Equals(IMemberReference other)
 {
     return Equals(other as MethodDefinition);
 }
        /// <summary>
        /// Determines whether two callable member references are considered equal according to their signatures.
        /// </summary>
        /// <param name="reference1">The first reference to compare.</param>
        /// <param name="reference2">The second reference to compare.</param>
        /// <returns><c>True</c> if the members are considered equal, <c>False</c> otherwise.</returns>
        public bool MatchMembers(IMemberReference reference1, IMemberReference reference2)
        {
            if (reference1 == null && reference2 == null)
                return true;
            if (reference1 == null || reference2 == null)
                return false;

            var callable = reference1 as ICallableMemberReference;
            if (callable != null)
                return MatchMembers(callable, reference2 as ICallableMemberReference);

            var type = reference1 as ITypeDefOrRef;
            if (type != null)
                return MatchMembers(type, reference1 as ITypeDefOrRef);

            return false;
        }
		public ParameterDefinitionCollection (IMemberReference container)
		{
			m_container = container;
		}
 public AccessorOwnerMemberReference(IMemberReference accessorReference)
 {
     if (accessorReference == null)
         throw new ArgumentNullException("accessorReference");
     this.accessorReference = accessorReference;
 }
Exemple #48
0
 public virtual bool Equals(IMemberReference other)
 {
     return (other is FieldReference)
         && Equals(other as FieldReference);
 }
Exemple #49
0
 public override bool Equals(IMemberReference other)
 {
     return (other is FieldDefinition)
            && Equals(other as FieldDefinition);
 }
Exemple #50
0
 /// <summary>
 /// Is other equal to this?
 /// </summary>
 public bool Equals(IMemberReference other)
 {
     return Equals(other as ClassReference);
 }
        public IMemberReference ImportReference(IMemberReference reference)
        {
            var type = reference as ITypeDefOrRef;
            if (type != null)
                return ImportType(type);

            var method = reference as MethodDefinition;
            if (method != null)
                return ImportMethod(method);

            var field = reference as FieldDefinition;
            if (field != null)
                return ImportField(field);

            var member = reference as MemberReference;
            if (member != null)
                return ImportMember(member);

            throw new NotSupportedException("Invalid or unsupported reference.");
        }
Exemple #52
0
 public MethodCalled(IMemberReference _memberReference, SequencePoint _sequencePoint)
 {
     memberReference = _memberReference;
     sequencePoint = _sequencePoint;
 }
            private void WriteMemberReference(IMemberReference memberReference, IFormatter formatter)
            {
                IFieldReference fieldReference = memberReference as IFieldReference;
                if (fieldReference != null)
                {
                    this.WriteFieldReference(fieldReference, formatter);
                }

                IMethodReference methodReference = memberReference as IMethodReference;
                if (methodReference != null)
                {
                    this.WriteMethodReference(methodReference, formatter);
                }

                IPropertyReference propertyReference = memberReference as IPropertyReference;
                if (propertyReference != null)
                {
                    this.WritePropertyReference(propertyReference, formatter);
                }

                IEventReference eventReference = memberReference as IEventReference;
                if (eventReference != null)
                {
                    this.WriteEventReference(eventReference, formatter);
                }
            }