そのため、WCF サービス リファレンスと、対応するReference.cs
生成されたプロキシ クラスを含む、継承したプロジェクトがあります。既存のプロキシ クラスでは、定義を確認できますenum
。
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyRecord.ColorAction", Namespace="http://schemas.datacontract.org/2004/07/DocumentsDataAccess.DataClasses")]
public enum ColorAction : int {
[System.Runtime.Serialization.EnumMemberAttribute()]
NONE = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
GREEN = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
RED = 2,
}
対応する WCF コードは次のとおりです。
[DataContract]
public enum ColorAction
{
[EnumMember]
NONE = 0,
[EnumMember]
GREEN = 1,
[EnumMember]
RED = 2,
}
wsdl
ブラウザで を見て、これが公開されていることを確認できます。リストされているenum
型を確認できます。
ただし、「更新」または「サービス参照の追加」(削除して再追加することによる新しい参照として) のいずれかを行うと、これenum
と他の多くのメソッドおよび列挙型が失われます。プロキシ クラスのダウンロードと作成は成功しているため、エラーの問題ではありません。
Add Service Reference
ダイアログの「詳細」設定をすべて調整してみましたが、違いはないようです。最終的な結果は、既存のコードが欠落している他のコードを呼び出して使用できることを期待しているためenums
、サービス参照を更新または再追加した後にコードがコンパイルされないことです。
すでにチェックを外してみましReuse types in all referenced assemblies
たが、結果は変わりませんでした。
私が見ているプロキシ クラスを作成した元の人は、ウィザードを使用せず、代わりAdd Service Reference
に直接使用したのでしょうか。SvcUtil.exe
私は以前にそれを使用しましたが、WCF サービスが公開しているすべてのものを生成するために使用する必要があるのは不思議ですか? サービスが公に提供するすべてのものを取得するには、どのスイッチが必要ですか? (参考までに、.NET 4.0 をターゲットにしています)。