2016-11-21 5 views
0

System.Attributeから継承するクラスがあります。基本クラス実行時に属性がリセットされるC#

このクラスは、どのページでもPageAttributesを設定するために使用されています。

実行時にこれらの属性を派生クラスからリセットすることはできますか。 派生クラスから変更しても、属性は変更されません。

基本フォームから派生したすべてのページにページレベル属性が設定されています。すべてのページレベルのメソッドは、ベースフォームで記述されています。ベースフォームの方法は

[PageAttributeDefinition(CompleteURL = "Default.aspx")] 
public partial class Testpage: BaseForm 
{ 
} 

次のようにページで定義された属性(ハードコードされた)を読み取ることができた動的条件に基づいて、属性「CompletrURL」に変更しようとしました。私はインスタンスを作成し、属性に値を設定することができます。しかし、ベースフォームのクラス私は変更された属性を読み取ることができません。

+2

コードはありますか?あなたが以前に試したことをお見せし、何がうまくいかないか説明してください。 – RandomStranger

答えて

1

実行時に属性を変更することはできないと思います。 social.msdnから

ありませんが、これは不可能です。属性は、クラスを定義するDLLまたはEXEに格納されます。したがって、属性の値を変更するには、基本的にそのDLLまたはEXEを編集するように求めています。アプリケーションは通常、実行中にバイナリを変更することはできません。 ...

+0

基本フォームから派生したすべてのページにページレベル属性が設定されています。すべてのページレベルのメソッドは、ベースフォームで記述されています。 Baseformメソッドは、次のようにページ内で定義された(ハードコードされた)属性を読み取ることができました。 [PageAttributeDefinition(CompleteURL = "Default.aspx")] パブリック部分クラスTestpage:BaseForm { }条件に基づいて属性「CompletrURL」を動的に変更しようとしました。私はインスタンスを作成し、属性に値を設定することができます。しかし、ベースフォームのクラス私は変更された属性を読み取ることができません。 – Jay

0

実行時に属性を更新することはできません。これはあなたが必要とするものですか?

void Main() 
{ 

    BaseTest test = new TestClass(); 
    var attr = (MyAttribute) test.GetType().GetCustomAttributes().First(); 
    attr.Id = 34; 

} 

[AttributeUsage(AttributeTargets.Class)] 
public class MyAttribute : Attribute 
{ 
    public int Id { get; set; } = 3;  
} 
public class BaseTest { } 

[My] 
public class TestClass : BaseTest { } 
関連する問題