Facebook C # SDK - .NET 3.5 & Динамические объекты - PullRequest
4 голосов
/ 13 января 2011

Я скачал Graph C # SDK для Facebook, примеры очень полезны и просты для понимания, однако я не могу понять, когда пытаюсь использовать тип динамического объекта в качестве возвращаемого объекта для вызова FacebookApp.Get ("me").

Я никогда раньше не использовал динамику, поэтому я немного пересмотрел, и кажется, что они являются новыми для Visual Studio 2010, это версия, которую я использую, но я не могу использовать последнюю платформу из-за моей производственной среды...

Есть ли тип, который я могу использовать вместо этого, или есть другой способ сделать это с помощью платформы 3.5?Вот пример из исходных файлов, предоставляемых вместе с двоичным файлом для платформы.

dynamic myInfo = app.Get("me");
lblTitle.Text = myInfo.name;

Я получаю сообщение об ошибке, указывающее, что я могу пропустить сборочную ссылку для типа dynamic.

Любой ився помощь очень ценится!с нетерпением жду начала работы с этим SDK !!

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Если вы хотите строго типизированные объекты, есть очень простой способ сделать это. Смотрите здесь: https://gist.github.com/906471

var fb = new FacebookClient("access_token");

var result = fb.Get<FBUser>("/me");

string name = result.Name;

MessageBox.Show("Hi " + name);

[DataContract]
public class FBUser {
   [DataMember(Name="name")]
   public string Name { get; set; }
   [DataMember(Name="first_name")]
   public string FirstName { get; set; }
}
4 голосов
/ 09 февраля 2011

Возможно, вы захотите посмотреть эту статью http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-first-Facebook-Application.aspx

var fb = new FacebookClient("access_token");

var result = (IDictionary<string, object>)fb.Get("/me");
var name = (string)result["name"];

MessageBox.Show("Hi " + name);

Вам нужно будет привести его к IDictionary <строка, объект>

1 голос
/ 01 апреля 2011

Основываясь на некоторых других ответах здесь, динамические объекты на самом деле являются объектами JSON, которые возвращаются из API Facebook.SDK использует динамический тип для создания более приятного интерфейса с базовыми данными.

Мне не нравилась идея каждый раз приводить объекты к IDictionary, поэтому я сделал еще один шаг вперед и создал объект фасада, который обеспечивает строго типизированный метод доступа к данным.*

И базовый класс (чтобы вы могли создавать фасады для других объектов 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");
        }
    }
}
0 голосов
/ 13 января 2011

динамически это C # 4.0 .Net 4.0 не .Net 3.5

...