Property
Represents a key/value pair.
            
                using System;
namespace Castle.MicroKernel.Registration
{
    public class Property
    {
        private readonly object key;
        private readonly object value;
        public object Key => key;
        public object Value => value;
        public Property(object key, object value)
        {
            this.key = key;
            this.value = value;
        }
        public static PropertyKey ForKey(string key)
        {
            return new PropertyKey(key);
        }
        public static PropertyKey ForKey(Type key)
        {
            return new PropertyKey(key);
        }
        public static PropertyKey ForKey<TKey>()
        {
            return new PropertyKey(typeof(TKey));
        }
        public static implicit operator Dependency(Property item)
        {
            if (item != null)
                return new Dependency(item);
            return null;
        }
    }
}