簡體   English   中英

是否有可能通過c#中的值獲取屬性

[英]is it possible to get a property by its value in c#

我有這段代碼,我在流利的休眠狀態下通過currentState比較oldState對象的值,我想要的是記錄已更改的屬性及其值,在這里我得到了新的和舊的值,但我也想得到屬性名稱。

如果我反映@event.Entity ,則可以獲取所有屬性及其值,因此有任何方法可以通過其值獲取屬性名稱。

public void OnPostUpdate(NHibernate.Event.PostUpdateEvent @event)
{
    var entityToAudit = @event.Entity as IAuditable;
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AuditLog.txt");
    using (StreamWriter sw = File.AppendText(path))
    {
        for (int i = 0; i < @event.OldState.Length; i++)
        {
            if (@event.OldState[i] != null)
            {
                if (!@event.OldState[i].Equals(@event.State[i]))
                {
                    sw.WriteLine("the value has ben changed from " + @event.OldState[i] + " to " + @event.State[i]);
                }
            }
            else
            {
                if (@event.State[i] != null)
                {
                    sw.WriteLine("the value has ben changed from being empty to " + @event.State[i]);
                }
            }
        }
    }
}

您不需要為此使用System.Reflection PostUpdateEvent已經按您需要的順序包含了所有屬性名稱:

var propertyName = e.Persister.PropertyNames[i];

暫無
暫無

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

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