WCFで匿名型を返したいと思います。これは可能ですか?WCFと匿名のタイプ
答えて
いいえ、そうではありません。あなたはあなたのタイプを事前に定義しなければなりません。
OK、わかりました。しかし、この目的のためにMyObj型を定義し、メンバのIsRequired = falseをマークした場合、メンバの一部だけでMyObjのインスタンス全体を送信するにはどうすればよいですか?これは可能ですか? –
Eugene Osovetskyまたはmarc_sの回答を参照してください。いずれかのルートがあなたを助けます。私はmarc_sの答えはおそらくあなたの問題のためのあなたの最高の1つだと思います。 – Randolpho
から匿名のタイプを返すことはできません。の方法はありますか?だから、なぜあなたはWCFからそれを返すことができるでしょうか?
私はこのdownvoteを理解していません - ジョンは絶対に正しいですが、匿名型はどの.NETメソッドからも返すことができません。なぜ100%の回答のためのdownvote ...... –
まったく。匿名型を「オブジェクト」として返すことができます。これは、Web APIとJSONシリアライザでうまくいきます。 –
この質問は一般的なWCFに関するものであり、Web APIに関するものではありません。また、JSON形式にはフィールド名が含まれています。それは、JavaScriptのために直列化および非直列化を正常に行うことができます。しかし、文字列値 "20"を直列化しようとすると、文字列または整数として逆直列化されます。 Javascriptでは問題ありませんが、C#で問題になる可能性があります。どのように「うまく動作するか」を定義する方法に注意してください。 –
匿名の型は使用できませんが、WCFと型なしメッセージについてはおそらく話していますか?
WCFには、Message
タイプのパラメータ(場合によっては同じ型の戻り値)を定義するオプションがあります。これは、WCFに行く生のメッセージです(それから戻ってきます)。
私はそこに多くの良い情報を見つけることができません - MSDNに関するいくつかのドキュメントがありますが、私がこれまで見てきた最高のものはKurt Claeysのブログ投稿WCF : Untyped messages on WCF operationsです。
このアプローチを使用することはお勧めできません.WCFがメッセージの内容を直接処理するのはもっと面倒な作業ですが、WCFが私たちを救済しようとしていることですが、もしあなたが本当にメッセージのすべてのビットを微調整しなければならない - これは行く方法のようです。
マルク・
おそらくカスタムメッセージがこのメッセージのために行く方法です。 +1 – Randolpho
OK、私は理解しています。しかし、 タイプMyObjをこの目的のために定義し、 メンバーのIsRequired = falseを指定すると、 メンバーの一部のみでMyObjの インスタンスを経由して+ sendを送信できますか?これは可能ですか?
あなたは間違いなく、匿名型を返すことができ[DataMember(EmitDefaultValue=false)]
を見てみましょう。これは、例えば、動作します:
public object GetLatestPost()
{
XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia");
var posts = from feed in feedXML.Descendants("item")
select new
{
Title = feed.Element("title").Value,
Link = feed.Element("link").Value,
Description = feed.Element("description").Value
};
return posts.First();
}
あなたがASMX ScriptServiceのWebMethod属性として、そのメソッドを呼び出した場合、あなたはそれからこのJSONを取得します:
{"d":
{"Title":"Using an iPhone with the Visual Studio development server",
"Link":"http://feeds.encosia.com/~r/Encosia/~3/vQoxmC6lOYk/",
"Description":" Developing iPhone-optimized portions of an ASP.NET ..."}}
あなたが返すようにIEnumerableをの戻り値の型を使用することができます匿名型のコレクション。
パラメータのないコンストラクタに関するいくつかの不満のためにXMLシリアライザではできないようですが、Dave Wardの指示に従ってajaxクライアントにサービスしている場合はjsonシリアライザで動作します。
ExpandoObjectを使用できます。あなたはDTOでプロパティを定義するときExpandoObjectように、クライアントは、辞書のように生成されます。
契約DTO
public class TaskDTO
{
public string Type { get; set; }
public ExpandoObject Args { get; set; }
public string Id { get; set; }
public TaskDTO SuccessTask { get; set; }
public TaskDTO FailTask { get; set; }
public bool IsFinal { get; set; }
}
クライアント
using (var client = new JobServiceClient())
{
var task = new TaskDTO
{
Id = Guid.NewGuid().ToString(),
Type = "SendEmailTask",
IsFinal = true
};
dynamic args = new ExpandoObject();
args.To = "[email protected]";
args.Title = "test job service";
args.Content = "test job service";
task.Args = ((IDictionary<string, object>)args).ToDictionary(i => i.Key, i => i.Value);
client.Execute(task);
}
がサービス
dynamic args = dto.Args;
- 1. Linq匿名タイプ
- 2. 匿名タイプのリスト
- 3. 匿名タイプの動的SortBy
- 4. 匿名タイプの作成!
- 5. C#7.0 ValueTuplesと匿名のタイプ
- 6. Linq - 私自身のタイプと匿名タイプのGroupByの使用
- 7. Linq、VB - 匿名タイプは匿名タイプに変換できません
- 8. 匿名クラスと匿名スレッド
- 9. SharePoint、WCF、および匿名アクセス
- 10. LINQの匿名タイプに参加する
- 11. C#Linq Assign GroupByの匿名タイプ
- 12. 匿名と非匿名の関数Lua
- 13. LINQ:匿名で注文するタイプ
- 14. 匿名のタイプとダイナミクスのリスト...混乱しました
- 15. GROUP BYのLINQクエリと匿名タイプのCount(*)
- 16. メッセージセキュリティモードのWCFサービスでの匿名関数呼び出し
- 17. クロムコンソールのネットワークで「匿名の匿名」とは何ですか?
- 18. StringTemplate4と匿名テンプレート
- 19. 匿名のマップページとfork()?
- 20. JPAとスカラーの "匿名"クラス
- 21. 匿名ユーザとログインユーザのカウント -
- 22. Symfony2と匿名のファイアウォール
- 23. 名前のイベントハンドラと匿名の関数
- 24. Scalaの引数型オーバーロードでの匿名関数のタイプ
- 25. Windows認証と匿名アクセスなしのIISでWCFサービスをホストする
- 26. 匿名タイプのリストを動的オブジェクトのリスト
- 27. WCF RIAサービスまたは匿名型を動的に返すw
- 28. 匿名タイプの読み書きプロパティを取得する
- 29. Javascript - Googleクロージャのアノテーション - タイプを匿名関数に設定する
- 30. 匿名タイプのIEnumerable <T>を注文するには?
がどのようにクライアントが知っていますどのようなタイプになりますか? –
タイプなし契約 –
を使用しても、これは_ワールドなことです。誰かがこれを必要とする理由をいくつか紹介します。 1.クライアントはJavascriptでJSONレスポンスを処理することができます。 2.多数の応答タイプを維持しなくても、WCFに「汎用」要求を出すことができます。 これまでのところ、(肯定的な)回答(@ dave-ward)は実際にこれを可能にする設定の詳細が不足しているように見えるのは残念です。 – tishma