示例#1
0
		private void DoAddField(FieldReference field)
		{
			if (m_needsCheck && m_method != null)
			{
				if (!field.Name.Contains("$"))
				{
					if (field.DeclaringType.FullName == m_type.FullName)
					{
						Partition p = m_partitions.Find(x => x.Fields.IndexOf(field.Name) >= 0);
						if (p != null)
						{
							if (p.Methods.IndexOf(m_method) < 0)
								p.Methods.Add(m_method);
						}
						else
						{
							p = new Partition(field.Name, m_method);					
							m_partitions.Add(p);
						}
					}
				}
			}
		}
示例#2
0
		private void DoMerge(Partition p, Partition q)
		{
			foreach (string field in q.Fields)
			{
				if (p.Fields.IndexOf(field) < 0)
					p.Fields.Add(field);
			}
			q.Fields.Clear();

			foreach (MethodDefinition method in q.Methods)
			{
				if (p.Methods.IndexOf(method) < 0)
					p.Methods.Add(method);
			}
			q.Methods.Clear();
		}