diff Source/Reflection/Extension/AttributeExtension.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Source/Reflection/Extension/AttributeExtension.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,47 @@
+using System;
+
+namespace BLToolkit.Reflection.Extension
+{
+	public class AttributeExtension
+	{
+		public AttributeExtension()
+		{
+			Values = new ValueCollection();
+		}
+
+		private AttributeExtension(ValueCollection values)
+		{
+			Values = values;
+		}
+
+		public string          Name   { get; set; }
+		public ValueCollection Values { get; private set; }
+
+		public object Value
+		{
+			get { return this == _null? null: Values.Value; }
+		}
+
+		public object this[string valueName]
+		{
+			get { return this == _null? null: Values[valueName]; }
+		}
+
+		public object this[string valueName, object defaultValue]
+		{
+			get { return this[valueName] ?? defaultValue; }
+		}
+
+		private AttributeNameCollection _attributes;
+		public  AttributeNameCollection  Attributes
+		{
+			get { return _attributes ?? (_attributes = new AttributeNameCollection()); }
+		}
+
+		private static readonly AttributeExtension _null = new AttributeExtension(ValueCollection.Null);
+		public  static          AttributeExtension  Null
+		{
+			get { return _null;  }
+		}
+	}
+}