StyleCop clean OjbectCreator
This commit is contained in:
@@ -19,7 +19,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
public class ObjectCreator
|
public class ObjectCreator
|
||||||
{
|
{
|
||||||
Pair<Assembly, string>[] ModAssemblies;
|
Pair<Assembly, string>[] modAssemblies;
|
||||||
|
|
||||||
public ObjectCreator(Manifest manifest)
|
public ObjectCreator(Manifest manifest)
|
||||||
{
|
{
|
||||||
@@ -35,7 +35,7 @@ namespace OpenRA
|
|||||||
asms.AddRange(asm.GetNamespaces().Select(ns => Pair.New(asm, ns)));
|
asms.AddRange(asm.GetNamespaces().Select(ns => Pair.New(asm, ns)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ModAssemblies = asms.ToArray();
|
modAssemblies = asms.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Action<string> MissingTypeAction =
|
public static Action<string> MissingTypeAction =
|
||||||
@@ -48,7 +48,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
public T CreateObject<T>(string className, Dictionary<string, object> args)
|
public T CreateObject<T>(string className, Dictionary<string, object> args)
|
||||||
{
|
{
|
||||||
foreach( var mod in ModAssemblies )
|
foreach (var mod in modAssemblies)
|
||||||
{
|
{
|
||||||
var type = mod.First.GetType(mod.Second + "." + className, false);
|
var type = mod.First.GetType(mod.Second + "." + className, false);
|
||||||
if (type == null) continue;
|
if (type == null) continue;
|
||||||
@@ -63,6 +63,7 @@ namespace OpenRA
|
|||||||
else
|
else
|
||||||
throw new InvalidOperationException("ObjectCreator: UseCtor on multiple constructors; invalid.");
|
throw new InvalidOperationException("ObjectCreator: UseCtor on multiple constructors; invalid.");
|
||||||
}
|
}
|
||||||
|
|
||||||
MissingTypeAction(className);
|
MissingTypeAction(className);
|
||||||
return default(T);
|
return default(T);
|
||||||
}
|
}
|
||||||
@@ -82,13 +83,14 @@ namespace OpenRA
|
|||||||
if (!args.ContainsKey(key)) throw new InvalidOperationException("ObjectCreator: key `{0}' not found".F(key));
|
if (!args.ContainsKey(key)) throw new InvalidOperationException("ObjectCreator: key `{0}' not found".F(key));
|
||||||
a[i] = args[key];
|
a[i] = args[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ctor.Invoke(a);
|
return ctor.Invoke(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Type> GetTypesImplementing<T>()
|
public IEnumerable<Type> GetTypesImplementing<T>()
|
||||||
{
|
{
|
||||||
var it = typeof(T);
|
var it = typeof(T);
|
||||||
return ModAssemblies.Select( ma => ma.First ).Distinct()
|
return modAssemblies.Select(ma => ma.First).Distinct()
|
||||||
.SelectMany(ma => ma.GetTypes()
|
.SelectMany(ma => ma.GetTypes()
|
||||||
.Where(t => t != it && it.IsAssignableFrom(t)));
|
.Where(t => t != it && it.IsAssignableFrom(t)));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user