ここでの他の回答に基づいて、動的オブジェクトは実際にはFacebookのAPIから返されるJSONオブジェクトです。 SDKはダイナミックタイプを使用して、基礎となるデータへのより良いインターフェースを作成します。
私はIDictionaryにオブジェクトをキャストするというアイデアが好きではありませんでしたので、私はそれをさらに進めて、強く型付けされたアクセスメソッドをデータに提供するファサードオブジェクトを作成しました。
public class FBPerson : FBBase
{
#region constructor
public FBPerson(object personObject)
: base(personObject)
{
}
#endregion
#region Properties
public string first_name
{
get { return ExtractValueAsString("first_name"); }
}
public string last_name
{
get { return ExtractValueAsString("last_name"); }
}
public string name
{
get { return ExtractValueAsString("name"); }
}
public string email
{
get { return ExtractValueAsString("email"); }
}
public string id
{
get { return ExtractValueAsString("id"); }
}
public string link
{
get { return ExtractValueAsString("link"); }
}
public string username
{
get { return ExtractValueAsString("username"); }
}
public string location
{
get { return ExtractValueAsString("location"); }
}
public string gender
{
get { return ExtractValueAsString("gender"); }
}
public string timezone
{
get { return ExtractValueAsString("timezone"); }
}
public string locale
{
get { return ExtractValueAsString("locale"); }
}
public string verified
{
get { return ExtractValueAsString("verified"); }
}
public string updated_time
{
get { return ExtractValueAsString("updated_time"); }
}
#endregion
}
とベースクラス(あなたが他のSDKオブジェクトのためのファサードを作成することができます)...
public class FBBase
{
private IDictionary<string, object> fbCollection = null;
public FBBase(object collection)
{
fbCollection = (IDictionary<string, object>)collection;
}
protected string ExtractValueAsString(string value)
{
Validate();
return fbCollection[value].ToString();
}
protected void Validate()
{
if (fbCollection == null)
{
throw new InvalidOperationException("null collection object");
}
}
}
私は(彼らは、私はそれが動作するはずだと思うので、3.5フォルダを含める)私も3.5 .NETからSDKを使用するための方法を探していますので、あなたが質問をしてくれてうれしいです。ここに私の質問ですhttp://stackoverflow.com/questions/4675364/それに目を光らせてください。私たちの2人の間で、誰かが私たちの質問の1つに答えてくれるかもしれません。 –