2017-01-16 5 views
1

OpenGraph .NETパーサーがビルドされていますが、プロパティバインドでスタックされています。私は単純にHTMLドキュメントを取り出し、HtmlAgilityPackを使って解析します。その後、私はキー特定OpenGraphために、各ノードをチェックしたい:C#カスタムプロパティ属性の反映

カスタム

public class OpenGraphAttribute : Attribute 
{ 
    public string Name { get; set; } 

    public OpenGraphAttribute(string name) 
    { 
     Name = name; 
    } 
} 

コンテナクラス

public class OGVideoContainer 
{ 
    [OpenGraphAttribute("og:video:url")] 
    public string DefaultUrl { get; set; } 

    [OpenGraphAttribute("og:video:secure_url")] 
    public string SecureUrl { get; set; } 

    [OpenGraphAttribute("og:video:type")] 
    public string Type { get; set; } 

    [OpenGraphAttribute("og:video:width")] 
    public string Width { get; set; } 

    [OpenGraphAttribute("og:video:height")] 
    public string Height { get; set; } 

    [OpenGraphAttribute("og:video:url")] 
    public string Url { get; set; } 
} 

パーサ

public OGVideoContainer ParseVideo(HtmlDocument doc) 
{ 
    var result = new OGVideoContainer(); 
    var parseableAttr = typeof(OGVideoContainer).GetProperties(); 
    foreach (var prop in parseableAttr) 
    { 
     var ca = prop.GetCustomAttributes(true).ElementAtOrDefault(0) as OpenGraphAttribute; 
     if (doc.DocumentNode.SelectSingleNode(String.Format("/html/head/meta[@property='{0}']", ca.Name)) != null) 
     { 
      // i am stuck here how can i access the result.propery value? 
     } 
    } 

    return result; 
} 
属性

しかし、result.parameterバインディングでスタックしています。対応するカスタム属性名の値をresult.DefaultUrlに割り当てる必要があります。これはどうすればできますか?

ありがとうございました。

答えて

3

prop.GetValue(result)を使用してプロパティ値を取得します。

0

ありがとうございました。セッターは次のように反映されます: