/// <summary>
 ///  非同期で処理を実行します。
 /// </summary>
 /// <param name="connectable"><see cref="ExapisSOP.ConnectionModel.IConnectable"/>インターフェースを実装したオブジェクトです。</param>
 /// <param name="arg">処理の実行に必要な引数です。</param>
 /// <returns>非同期操作を表すオブジェクトです。</returns>
 /// <exception cref="System.ArgumentNullException"/>
 public static async Task RunAsync(this IConnectable connectable, object arg)
 {
     if (connectable == null)
     {
         throw new ArgumentNullException(nameof(connectable));
     }
     using (var connector = connectable.GetConnector()) {
         await connector.RunAsync(arg);
     }
 }
 /// <summary>
 ///  非同期で処理を実行します。
 /// </summary>
 /// <typeparam name="TIn">接続子の引数の型です。</typeparam>
 /// <typeparam name="TOut">接続子の戻り値の型です。</typeparam>
 /// <param name="connectable"><see cref="ExapisSOP.ConnectionModel.IConnectable{TIn, TOut}"/>インターフェースを実装したオブジェクトです。</param>
 /// <param name="arg">処理の実行に必要な引数です。</param>
 /// <returns>戻り値を含む非同期操作を表すオブジェクトです。</returns>
 /// <exception cref="System.ArgumentNullException"/>
 public static async Task <TOut> RunAsync <TIn, TOut>(this IConnectable <TIn, TOut> connectable, TIn arg)
 {
     if (connectable == null)
     {
         throw new ArgumentNullException(nameof(connectable));
     }
     using (var connector = connectable.GetConnector()) {
         return(await connector.RunAsync(arg));
     }
 }
 /// <summary>
 ///  処理を実行します。
 /// </summary>
 /// <param name="connectable"><see cref="ExapisSOP.ConnectionModel.IConnectable"/>インターフェースを実装したオブジェクトです。</param>
 /// <param name="arg">処理の実行に必要な引数です。</param>
 /// <exception cref="System.ArgumentNullException"/>
 public static void Run(this IConnectable connectable, object arg)
 {
     if (connectable == null)
     {
         throw new ArgumentNullException(nameof(connectable));
     }
     using (var connector = connectable.GetConnector()) {
         connector.Run(arg);
     }
 }