読者です 読者をやめる 読者になる 読者になる

アプリケーション構成ファイルを記述して WCF サービスに派生クラスを渡せるようにする

.net

アプリケーション構成ファイルに system.runtime.serialization セクションを記述することで、WCF サービスに派生クラスを渡せるようになります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.serialization>
        <dataContractSerializer>
            <declaredTypes>
                <!--ベースクラスの型を指定-->
                <add type="DataContractSample.Entity, DataContractSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
                    <!--派生クラスの型を指定-->
                    <knownType type="DataContractSample.Customer, DataContractSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <knownType type="DataContractSample.Product, DataContractSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                </add>
            </declaredTypes>
        </dataContractSerializer>
    </system.runtime.serialization>
</configuration>

この方法を使えば、サービスに渡す派生クラスが増えた場合に、ソースコードを変更せずに対応可能。

コードで指定する方法もあります。

でも、派生クラスも受け取るサービスは作らない方がいいです。クライアント側はどんなクラスを渡せるのか分かりづらいので。
上記の例なら、Customer と Product で別々のオペレーションにするべきです。