Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/15/12 09:11:17 (12 years ago)
Author:
gkronber
Message:

#1081 merged r7462:7609 from trunk into time series branch

Location:
branches/HeuristicLab.TimeSeries
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.TimeSeries

  • branches/HeuristicLab.TimeSeries/HeuristicLab.PluginInfrastructure/3.3/SandboxApplicationManager.cs

    r7268 r7615  
    235235      PluginDescription pluginDesc = (PluginDescription)pluginDescription;
    236236      return from asm in AppDomain.CurrentDomain.GetAssemblies()
    237              where !IsDynamicAssembly(asm)
     237             where !asm.IsDynamic && !string.IsNullOrEmpty(asm.Location)
    238238             where pluginDesc.AssemblyLocations.Any(location => location.Equals(Path.GetFullPath(asm.Location), StringComparison.CurrentCultureIgnoreCase))
    239239             from t in GetTypes(type, asm, onlyInstantiable, includeGenericTypeDefinitions)
     
    249249      }
    250250      return result;
    251     }
    252 
    253     private static bool IsDynamicAssembly(Assembly asm) {
    254       return (asm is System.Reflection.Emit.AssemblyBuilder) || string.IsNullOrEmpty(asm.Location);
    255251    }
    256252
     
    266262    private static IEnumerable<Type> GetTypes(Type type, Assembly assembly, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
    267263      var buildTypes = from t in assembly.GetTypes()
     264                       where CheckTypeCompatibility(type, t)
    268265                       where !IsNonDiscoverableType(t)
    269                        where CheckTypeCompatibility(type, t)
    270266                       where onlyInstantiable == false ||
    271267                             (!t.IsAbstract && !t.IsInterface && !t.HasElementType)
     
    286282        return true;
    287283      if (type.IsGenericType && other.IsGenericType) {
     284        var otherGenericArguments = other.GetGenericArguments();
     285        var typeGenericArguments = type.GetGenericArguments();
     286
     287        //check type arguments count
     288        if (otherGenericArguments.Length != typeGenericArguments.Length)
     289          return false;
     290
     291        //check type arguments & constraints
     292        int i = 0;
     293        foreach (var genericArgument in typeGenericArguments) {
     294          if (otherGenericArguments[i].IsGenericParameter) {
     295            foreach (var constraint in otherGenericArguments[i].GetGenericParameterConstraints())
     296              if (!constraint.IsAssignableFrom(genericArgument)) return false;
     297          } else if (genericArgument != otherGenericArguments[i]) return false;
     298          i++;
     299        }
     300        //check types
    288301        try {
    289           if (type.IsAssignableFrom(other.GetGenericTypeDefinition().MakeGenericType(type.GetGenericArguments())))
     302          var otherGenericTypeDefinition = other.GetGenericTypeDefinition();
     303          if (type.IsAssignableFrom(otherGenericTypeDefinition.MakeGenericType(typeGenericArguments)))
    290304            return true;
    291305        }
Note: See TracChangeset for help on using the changeset viewer.