2017-05-18 8 views
0

SignalRはどのようにして開発者がc#で定義されていない関数名を呼び出すことができるのですか?たとえば、C#Feature Quetion:signalrはどのようにしてハブからクライアント機能を呼び出すことができますか?

Clients.All.sayHello("Greetings!"); 

sayHello(文字列msg)は定義されていません。 IntelliSenseは期待通りにそれを取り上げませんが、私は彼らがそれを可能にするために図書館でそれをどのように実装したのか不思議です。

答えて

3

この背景には、Dynamic Objectsがあります。これにより、コンパイル時ではなく実行時に新しい型メンバーを提供できます。

ダイナミックオブジェクトは、コンパイル時ではなく、実行時にプロパティやメソッドなどのメンバーを公開します。これにより、静的な型または書式に一致しない構造体で動作するオブジェクトを作成できます。 (javascriptの定義は実行時まで利用できないとしてここか、)

そのような行動を持っている独自のクラスを作成するには、DynamicObjectを拡張することができます。あなたはsourceを見ることで、同様にこれを発見した可能性が

public class ClientProxy : DynamicObject, IClientProxy 
{ 
    ... 
+0

は、私はここに掲載した後、私はGitHubのを見て、ありがとうございます。 DynamicObjectはネット標準1.xでは使用できないようです。 – DonO

関連する問題