簡體   English   中英

如何使用C#動態創建現有類的新屬性

[英]How to create a new property to existing class dynamically using c#

我們如何動態地向已經具有某些屬性的現有類中添加屬性。

假設我有返回類型為IList的方法

Employee類具有3個屬性,但在某些情況下,按方法返回的是Employee類中不存在的額外屬性,並且此動態屬性可能在每次調用時發生變化。

因此,基於結果,我們必須使用C#動態添加現有屬性之外的屬性

我正在使用以下內容將對象的淺表副本創建到ExpandoObject中,以便可以分配額外的屬性。 這可能為您工作。

private dynamic ConvertToExpandoObject<T>(T value)
{
    var result = new ExpandoObject();
    var valueType = typeof(T);
    foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(valueType))
    {
        result[property.Name] = property.GetValue(value);
    }
    return result as ExpandoObject;
}

例:

Employee e = db.GetEmployee(1);
dynamic expandableEmployee = ConvertToExpandoObject(e);
expandableEmployee.ExpectedYearsOfService = 10*1000;

請注意,此字段不會添加到原始對象。

使用dynamic

dynamic d = yourExistingObject;
d.newProperty = "string for example";

暫無
暫無

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

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