2016-11-21 56 views
0

我有一個從System.Attribute繼承的類。在運行時重置基類屬性C#

該類用於設置任何頁面的PageAttributes。

是否有可能在運行時從派生類中重置這些屬性? 從派生類更改它不會更改屬性。

我有一個頁面級屬性設置爲從基本形式派生的所有頁面。所有頁面級別的方法都以baseform編寫。基本形式的方法能夠讀取頁中定義的屬性(硬編碼),如下

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

試圖改變動態地基於條件的屬性「CompletrURL」。我能夠創建實例並將該值設置爲該屬性。然而,baseform類我無法讀取修改後的屬性。

+2

你有一些代碼嗎?請告訴我們你之前嘗試過什麼,並解釋發生了什麼問題。 – RandomStranger

回答

1

我不認爲有可能在運行時改變屬性。

social.msdn

不,這是不可能的。請記住,屬性存儲在定義該類的DLL或EXE中。所以要改變一個屬性的值,你基本上要求編輯該DLL或EXE。應用程序在運行時通常不能更改它們自己的二進制文件。 ...

+0

我有一個頁面級屬性設置爲從基本形式派生的所有頁面。所有頁面級別的方法都以baseform編寫。 Baseform方法能夠讀取頁面中定義(硬編碼)的屬性,如下所示。 [PageAttributeDefinition(CompleteURL =「Default.aspx」)] public partial class Testpage:BaseForm { }。試圖根據條件動態更改屬性「CompletrURL」。我能夠創建實例並將該值設置爲該屬性。然而,baseform類我無法讀取修改後的屬性。 – 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 { }