2012-04-26 13 views
1

属性を抽出しようとしています。属性はカスタム属性です。 enter image description here しかし、私はどのようにobject.idものを使用することができません。
たとえば、私のコメント付きコードadpter.idは無効です。私はそのオブジェクトをそのタイプに変換しています。ここで属性データを抽出できません

は、属性のコードです:

[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] 
public class Adapter : Attribute 
{ 
    // This class implements the Adapter Attribite 
    readonly int id; 
    readonly string Title; 
    public string Comment { get; set; } 

    private string[] Relation; 

    public Adapter(int id, string Title,string []relations) 
    { 
     this.id = id; 
     this.Title = Title; 
     this.Relation = relations; 
    } 


} 
+1

以下の回答に加えて、System.Attributeから派生したタイプに "-Attribute"接尾辞を使用する必要があります。例えば。 "AdapterAttribute"。 – Dennis

答えて

4

フィールドのデフォルトの表示は非公開です。idTitleを公開するようにしてください。
ます。また、このような民間のセッターを持つプロパティにフィールドを変更することができます:公共のフィールドを作成するために、悪いデザインとみなされたよう

public Id { get { return id; } } 
public Title { get { return title; } } 

public Id { get; private set; } 
public Title { get; private set; } 

またはプロパティを読み取り専用にします。

+1

これは読み取り専用プロパティではありません。これはプライベートセッターの所有物です。彼らの間には違いがあります。 – Dennis

+0

それは正しい、私の悪いです。 readonlyプロパティにはセッターがありません。それを反映する答えを更新しました。 – Xharze

+0

'public readonly Id'は' public id'とどう違うのですか? – Cancer

1

あなたが別のクラスからIDを読みたいですか? パブリック修飾子がありません。

public readonly int id; 

変数、プロパティ、修飾子を逃す方法が自動的にプライベートになります。

希望すると便利です。

1

プライベートメンバーとしてクラスのデフォルトの動作が与えられていると思われる場合は、publicに変更してみてください!

関連する問題