avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hamm...@apache.org
Subject cvs commit: avalon-sandbox/avalon-net/cscontainer/AvalonContainer/Util AssemblyUtil.cs
Date Thu, 25 Sep 2003 13:24:25 GMT
hammett     2003/09/25 06:24:25

  Modified:    avalon-net/cscontainer/AvalonContainer DefaultContainer.cs
               avalon-net/cscontainer/AvalonContainer/Factory
                        ComponentFactoryManager.cs
               avalon-net/cscontainer/AvalonContainer/Util AssemblyUtil.cs
  Log:
  Bug solved: We shall look only for exported types in an assembly.
  
  Revision  Changes    Path
  1.3       +1 -1      avalon-sandbox/avalon-net/cscontainer/AvalonContainer/DefaultContainer.cs
  
  Index: DefaultContainer.cs
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/avalon-net/cscontainer/AvalonContainer/DefaultContainer.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultContainer.cs	25 Sep 2003 01:42:34 -0000	1.2
  +++ DefaultContainer.cs	25 Sep 2003 13:24:25 -0000	1.3
  @@ -297,7 +297,7 @@
   			foreach(Assembly assembly in assemblies)
   			{
   				Pair[] pairs = AssemblyUtil.FindTypesUsingAttribute(
  -					assembly, typeof( AvalonServiceAttribute ));
  +					assembly, typeof( AvalonServiceAttribute ), true);
   
   				foreach(Pair pair in pairs)
   				{
  
  
  
  1.2       +1 -1      avalon-sandbox/avalon-net/cscontainer/AvalonContainer/Factory/ComponentFactoryManager.cs
  
  Index: ComponentFactoryManager.cs
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/avalon-net/cscontainer/AvalonContainer/Factory/ComponentFactoryManager.cs,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ComponentFactoryManager.cs	22 Sep 2003 23:49:23 -0000	1.1
  +++ ComponentFactoryManager.cs	25 Sep 2003 13:24:25 -0000	1.2
  @@ -130,7 +130,7 @@
   			Assembly currentAssembly = Assembly.GetExecutingAssembly();
   
   			return AssemblyUtil.FindTypesUsingAttribute(
  -				currentAssembly, typeof(LifestyleTargetAttribute));
  +				currentAssembly, typeof(LifestyleTargetAttribute), false);
   		}
   
   		private void InitializePrototype(Pair[] pairs)
  
  
  
  1.2       +35 -10    avalon-sandbox/avalon-net/cscontainer/AvalonContainer/Util/AssemblyUtil.cs
  
  Index: AssemblyUtil.cs
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/avalon-net/cscontainer/AvalonContainer/Util/AssemblyUtil.cs,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AssemblyUtil.cs	22 Sep 2003 23:49:24 -0000	1.1
  +++ AssemblyUtil.cs	25 Sep 2003 13:24:25 -0000	1.2
  @@ -60,26 +60,51 @@
   		{
   		}
   
  -		public static Pair[] FindTypesUsingAttribute(Assembly assembly, Type attributeType)
  +		public static Pair[] FindTypesUsingAttribute(Assembly assembly, Type attributeType, bool
onlyPublicTypes)
   		{
   			ArrayList typesFound = new ArrayList();
   
  -			Type[] types = assembly.GetTypes();
  -
  -			foreach(Type type in types)
  +			try
   			{
  -				if (!type.IsClass || type.IsAbstract)
  +				AssemblyName[] names = assembly.GetReferencedAssemblies();
  +
  +				for(int i=0; i < names.Length; i++)
   				{
  -					continue;
  +					String dependsOn = names[i].FullName;
  +					// TODO: Handle assemblies dependencies gracefully
   				}
   
  -				object[] attrs = type.GetCustomAttributes(
  -					attributeType, false);
  +				Type[] types = null;
  +				
  +				if (onlyPublicTypes)
  +				{
  +					types = assembly.GetExportedTypes();
  +				}
  +				else
  +				{
  +					types = assembly.GetTypes();
  +				}
   
  -				if (attrs != null && attrs.Length == 1)
  +				foreach(Type type in types)
   				{
  -					typesFound.Add(new Pair(type, attrs[0]));
  +					if (!type.IsClass || type.IsAbstract)
  +					{
  +						continue;
  +					}
  +
  +					object[] attrs = type.GetCustomAttributes(
  +						attributeType, false);
  +
  +					if (attrs != null && attrs.Length == 1)
  +					{
  +						typesFound.Add(new Pair(type, attrs[0]));
  +					}
   				}
  +
  +			}
  +			catch(Exception e)
  +			{
  +				throw e;
   			}
   
   			Pair[] pairs = new Pair[typesFound.Count];
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org


Mime
View raw message