| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Windows;
 
- namespace OpenSEMI.ClientBase.Command
 
- {
 
-     public class CommandParameter<TCustomParameter>
 
-     {
 
-         public TCustomParameter CustomParameter { get; private set; }
 
-         protected CommandParameter(TCustomParameter customParameter)
 
-         {
 
-             this.CustomParameter = customParameter;
 
-         }
 
-         public static CommandParameter<TCustomParameter> Cast(object parameter)
 
-         {
 
-             var parameterToCast = parameter as CommandParameter<object>;
 
-             if (parameterToCast == null)
 
-             {
 
-                 throw new InvalidCastException(string.Format("Failed to case {0} to {1}",
 
-                     parameter.GetType(), typeof(CommandParameter<object>)));
 
-             }
 
-             var castedParameter = new CommandParameter<TCustomParameter>(
 
-                 (TCustomParameter)parameterToCast.CustomParameter);
 
-             return castedParameter;
 
-         }
 
-     }
 
-     public class EventCommandParameter<TCustomParameter, TEventArgs> : CommandParameter<TCustomParameter>
 
-         where TEventArgs : RoutedEventArgs
 
-     {
 
-         public RoutedEvent RoutedEvent { get; private set; }
 
-         public TEventArgs EventArgs { get; private set; }
 
-         public EventCommandParameter(
 
-             TCustomParameter customParameter,
 
-             RoutedEvent routedEvent,
 
-             TEventArgs eventArgs)
 
-             : base(customParameter)
 
-         {
 
-             this.RoutedEvent = routedEvent;
 
-             this.EventArgs = eventArgs;
 
-         }
 
-         public static new EventCommandParameter<TCustomParameter, TEventArgs> Cast(object parameter)
 
-         {
 
-             var parameterToCast = parameter as EventCommandParameter<object, RoutedEventArgs>;
 
-             if (parameterToCast == null)
 
-             {
 
-                 throw new InvalidCastException(string.Format("Failed to case {0} to {1}",
 
-                     parameter.GetType(), typeof(EventCommandParameter<object, RoutedEventArgs>)));
 
-             }
 
-             var castedParameter = new EventCommandParameter<TCustomParameter, TEventArgs>(
 
-                 (TCustomParameter)parameterToCast.CustomParameter,
 
-                 parameterToCast.RoutedEvent,
 
-                 (TEventArgs)parameterToCast.EventArgs);
 
-             return castedParameter;
 
-         }
 
-     }
 
-     public class PropertyCommandParameter<TCustomParameter, TValue> : CommandParameter<TCustomParameter>
 
-     {
 
-         public DependencyProperty Property { get; private set; }
 
-         public TValue Value { get; private set; }
 
-         public PropertyCommandParameter(
 
-             TCustomParameter customParameter,
 
-             DependencyProperty property,
 
-             TValue value)
 
-             : base(customParameter)
 
-         {
 
-             this.Property = property;
 
-             this.Value = value;
 
-         }
 
-         public static new PropertyCommandParameter<TCustomParameter, TValue> Cast(object parameter)
 
-         {
 
-             var parameterToCast = parameter as PropertyCommandParameter<object, object>;
 
-             if (parameterToCast == null)
 
-             {
 
-                 throw new InvalidCastException(string.Format("Failed to case {0} to {1}",
 
-                     parameter.GetType(), typeof(PropertyCommandParameter<object, object>)));
 
-             }
 
-             var castedParameter = new PropertyCommandParameter<TCustomParameter, TValue>(
 
-                 (TCustomParameter)parameterToCast.CustomParameter,
 
-                 parameterToCast.Property,
 
-                 (TValue)parameterToCast.Value);
 
-             return castedParameter;
 
-         }
 
-     }
 
- }
 
 
  |