4

ライブラリSharedTypesクラスに配置したカスタムデータ型があります

namespace SharedTypes
{
    public class District
    {
        public long Id { get; set; }
        public string Name { get; set; }
    }
}

次に、このサービスを備えたWCFサーバーがあります

using System.ServiceModel;
using SharedTypes;

namespace WCF.WCFInterfaces
{
    [ServiceContract]
    public interface IWcfService
    {
        [OperationContract]
        District GetDistrict(long id);

        [OperationContract]
        void CreateDistrict(District district);

        [OperationContract]
        List<District> GetDistricts();
     }
}

クライアント側にはインターフェイスがあります(実装を挿入します)

using SharedTypes;

namespace WcfInterfaces
{
    public interface IDistrictManager
    {
        void CreateDistrict(District district);
        District GetDistrict(long id);
        List<District> GetDistricts();
    }
}

私はついにクライアントが使用すべき実装を手に入れました

public class DistrictManager : IDistrictManager
{
    private readonly WcfServiceClient _salesService;
    public DistrictManager()
    {
        _salesService = new WcfServiceClient();
    }

    public void CreateDistrict(District district)
    {
        _salesService.CreateDistrictAsync(district);
    }

    public District GetDistrict(long id)
    {
        return _salesService.GetDistrict(id);
    }

    public List<District> GetDistricts()
    {
        var list = _salesService.GetDistricts();
        return list.ToList();
    }
}

しかし、ここで問題が発生します。この実装では、サービスリファレンスから取得したバージョンのDistrictを使用する必要があります。

WcfClientLibrary.SalesService.District

それ以外の

SharedTypes.District

それらは同じですが、VSはそれを知りません

そのため、2つの異なるタイプのDistrictクラスがあるため、インターフェイスが適切に実装されていないというエラーが発生します。

代わりにSharedTypes.Districtを使用するためのサービス参照を取得するにはどうすればよいですか?それとも、それを実装する私の方法はかなり遠いですか?

4

2 に答える 2

3

クライアント プロジェクトでサービス参照を右クリックし、[参照されたアセンブリで型を再利用する] をオンにします。

SharedTypes.Districtクライアント サービス参照プロジェクトに追加したことを確認してください。

于 2013-01-08T13:03:16.607 に答える
2

クライアント側で WCF 参照を追加する場合。詳細オプションをクリックします。指定したアセンブリの型を再利用するように指定できる設定があります。アセンブリを指定できます。

于 2013-01-08T13:03:24.567 に答える