Small cleanup in TraitDictionary.
This commit is contained in:
@@ -36,19 +36,14 @@ namespace OpenRA
|
|||||||
|
|
||||||
class TraitDictionary
|
class TraitDictionary
|
||||||
{
|
{
|
||||||
// construct this delegate once.
|
static readonly Func<Type, ITraitContainer> CreateTraitContainer = t =>
|
||||||
static Func<Type, ITraitContainer> doCreateTraitContainer = CreateTraitContainer;
|
(ITraitContainer)typeof(TraitContainer<>).MakeGenericType(t).GetConstructor(Type.EmptyTypes).Invoke(null);
|
||||||
static ITraitContainer CreateTraitContainer(Type t)
|
|
||||||
{
|
|
||||||
return (ITraitContainer)typeof(TraitContainer<>).MakeGenericType(t)
|
|
||||||
.GetConstructor(Type.EmptyTypes).Invoke(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary<Type, ITraitContainer> traits = new Dictionary<Type, ITraitContainer>();
|
readonly Dictionary<Type, ITraitContainer> traits = new Dictionary<Type, ITraitContainer>();
|
||||||
|
|
||||||
ITraitContainer InnerGet(Type t)
|
ITraitContainer InnerGet(Type t)
|
||||||
{
|
{
|
||||||
return traits.GetOrAdd(t, doCreateTraitContainer);
|
return traits.GetOrAdd(t, CreateTraitContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
TraitContainer<T> InnerGet<T>()
|
TraitContainer<T> InnerGet<T>()
|
||||||
|
|||||||
Reference in New Issue
Block a user