Mercurial > pub > bltoolkit
comparison Source/Reflection/Extension/ExtensionList.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Collections.Generic; | |
| 3 | |
| 4 namespace BLToolkit.Reflection.Extension | |
| 5 { | |
| 6 public class ExtensionList : Dictionary<string,TypeExtension> | |
| 7 { | |
| 8 public new TypeExtension this[string typeName] | |
| 9 { | |
| 10 get | |
| 11 { | |
| 12 TypeExtension value; | |
| 13 lock (this) | |
| 14 return TryGetValue(typeName, out value) ? value : TypeExtension.Null; | |
| 15 } | |
| 16 } | |
| 17 | |
| 18 public TypeExtension this[Type type] | |
| 19 { | |
| 20 get | |
| 21 { | |
| 22 lock (this) | |
| 23 foreach (var ext in Values) | |
| 24 if (ext.Name == type.Name || ext.Name == type.FullName) | |
| 25 return ext; | |
| 26 | |
| 27 if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) | |
| 28 return this[Nullable.GetUnderlyingType(type)]; | |
| 29 | |
| 30 return TypeExtension.Null; | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 public void Add(TypeExtension typeInfo) | |
| 35 { | |
| 36 lock (this) | |
| 37 Add(typeInfo.Name, typeInfo); | |
| 38 } | |
| 39 } | |
| 40 } |
