Visual Studio 2008からRDSサービスを作成(4)(失敗編2)

前回の「Visual Studio 2008からRDSサービスを作成(4)(失敗編)」からの続きです。
これも失敗例ですので、ご注意下さい。


  • AddPortTest.csに追加したReplaceのハンドラ(修正前)
        /// <summary>
        /// Replace Handler
        /// </summary>
        /// <param name ="replace"></param>
        /// <reteuns></returns>
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        public virtual IEnumerator<ITask> ReplaceHandler(Replace replace) 
        {
            _state = replace.Body;
            replace.ResponsePort(DefaultReplaceResponseType.Instance);
            yield break;
        }
    • 73行目(_state = replace.Body;の部分)

型'Microsoft.Dss.ServiceModel.Dssp.GetRequestType'を型'AddPortTest.AddPortTestState'に暗黙的に変換できません。

    • 74行目(replace.ResponsePort(DefaultReplaceResponseType.Instance);の部分)

実行不可能なメンバ
'Microsoft.Dss.ServiceModel.Dssp.DsspOperation>.ResponsePort'をメソッドのように使用することはできません。

73行目は型変換に問題があるようだったので、まずはreplace.Bodyの型を調べてみました。

  • GetRequestType DsspOperation>.Body

とGetRequestType型のようです。

そこで、AddPortTestState型のものがないか探してみたところ、

  • PortSet DssOperation>.ResponsePort

ResponsePortが一番近そうだったので、以下のように書き換えてみました。

  • 修正後
        /// <summary>
        /// Replace Handler
        /// </summary>
        /// <param name ="replace"></param>
        /// <reteuns></returns>
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        public virtual IEnumerator<ITask> ReplaceHandler(Replace replace) 
        {
            _state = replace.ResponsePort;
            replace.ResponsePort(DefaultReplaceResponseType.Instance);
            yield break;
        }


そして、再度ソリューションのビルドをしてみたところ、73行目のエラーが消えました。

が、まだ74行目が残ってます。。。

    • 74行目(replace.ResponsePort(DefaultReplaceResponseType.Instance);の部分)

実行不可能なメンバ
'Microsoft.Dss.ServiceModel.Dssp.DsspOperation>.ResponsePort'をメソッドのように使用することはできません。

次回へ続く。。。