簡體   English   中英

在運行時更改屬性名稱

[英]Change a property name at runtime

我可以在運行時在C#中更改類的字段嗎?

例如,如果我有課:

public class ExampleClass{
    public string Name;
}

我可以在運行時使用反射或其他技術對其進行更改,以將Name更改為Name1嗎?

public class ExampleClass{
    public string Name1;
}

不,您不能在運行時更改類型的實際成員

選項:

  • 快速創建一個新類型,該類型看起來很像ExampleClass ,但是具有不同的成員-大概它們之間有一些映射代碼
  • 如果意圖是用於某種類型的運行時綁定,請考慮使用ICustomTypeDescriptorIDynamicMetaObjectProvider它將允許某些框架將其視為具有Name1 ,即使實際上沒有(注意:諸如DynamicObjectExpandoObject類的東西都包含IDynamicMetaObjectProvider實現) ,但您可以通過其他方式進行操作)
  • 使用索引器,即var val = obj["Name1"]; 返回有意義的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM