2017-06-26 11 views
0

私はAWSラムダ関数を作成していますが、イベントが発生してラムダ関数が呼び出されると、関数ハンドラのイベントオブジェクトはeventArgs.FirstNameとeventArgs.LastNameというプロパティを持ちます。私はEventArgsクラスで何かをしなければならないと思っていますが、混乱しています。EventArgsを使用してイベントの詳細を取得する方法は?

私の議論は、関数のために正確に何をすべきですか?現在私は持っています(EventArgs e、ILambdaContextコンテキスト)。このファンクションに送信されるファーストネーム&の姓を取得するにはどうすればよいですか?

+0

.NETのすべてのイベントクラスは、ベースとして 'EventArgs'を継承する必要があります。プロパティを見るためにクラスにキャストする必要があります(APIのドキュメントを見てください)。EventArgのソースについては、こちらをご覧ください:http://www.dotnetframework.org/default.aspx/DotNET/ DotNET/8 @ 0/untmp/whidbey/REDBITS/ndp/clr/src/BCL/System/EventArgs @ cs/1/EventArgs @ cs – Kyle

答えて

0

documentation

をお読みくださいデフォルトでは最初の引数は、ストリームですが、限り、あなたはそれのためのデフォルト・シリアライザを提供して、あなたが望む任意の型を指定することができます。これを行うには、メソッドに属性を追加します。あなたのケースでは

[LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] 
pubic void Foo(UserEventArgs eventArgs, ILambdaContext context) { 
//do something 
} 

[Serializable()] 
public class UserEventArgs : EventArgs { 
    public string FirstName {get; set;} 
    public string LastName {get; set;} 
} 

ところで、あなたは、すべてのEventArgsクラスから継承/使用する必要はありません。これはすでにあなたが持っているものと仮定しています。

また、このようなあなたのproject.jsonファイルにAmazon.Lambda.Serialization.Jsonへの依存関係を追加します。

"dependencies":{ 


     "Amazon.Lambda.Serialization.Json": "1.0.0" 
    }, 
0

1つの可能な解決法は、このように、EventArgsのの新しいセットを作成することです:

その後
public class NameEventArgs: System.EventArgs 
{ 
    String FirstName {get; set;} 
    String LastName {get; set;} 
} 

、イベントのデリゲートを作成します。

public delegate void NameEventHandler(object sender, NameEventArgs e); 

は、イベントのデリゲートをインスタンス化:

public event NameEventHandler SomeEvent; 

目的が完了したときに何かをするメソッドを定義します。

public void EventHandler(object sender, NameEventArgs e) 
{ 
    // do something 
} 

はイベントにそのメソッドを割り当てます。

this.SomeEvent += this.EventHandler; 

あなたがこのモデルを使用する場合は、あなたがする必要がありますNameEventArgsオブジェクトにさらに値を追加して、ラムダの目標を達成することができます。

関連する問題