簡體   English   中英

從 C# 中的類中獲取全名屬性

[英]Get full name properties from class in C#

我需要得到這個結果:

ProgrammeEtude.Description

所以,我做了類似的事情並且它起作用了

modelMember = $"{nameof(Gabarit.ProgrammeEtude)}.{nameof(Gabarit.ProgrammeEtude.Description)}";

但它很難看,如果我們要到達的班級不止一個,它就不會干凈。 所以,我想知道是否有可能創建一個函數來在沒有第一類的情況下獲取 fullName 屬性。 僅通過調用函數

// Like that
modelMember = typeof(ProgrammeEtude).GetPropertyFullName(nameof(ProgrammeEtude.Description));

// Or like that
modelMember = GetPropertyFullName(ProgrammeEtude.Description);

謝謝!

您可以在運行時執行此操作:

public class SomeClass
{
    public SomeClass Other;
}

public class Tests
{
    [Test]
    public void Test1()
    {
        var result = NameOf<SomeClass>(x => x.Other.Other.Other);
    }

    public static string NameOf<T>(Expression<Func<T,object>> selector)
    {
        const string joinWith = ".";
        return nameof(T) + joinWith + string.Join(joinWith, selector.ToString().Split('.').Skip(1));
    }
}

結果: SomeClass.Other.Other.Other

您可以使用此功能來獲得所需的結果 - 使用/退出命名空間/索引/分離選擇只是開始或結束或跳過某些內容等。

請注意,只有當您不使用一些通過點訪問的時髦變量/枚舉時,這才有效。 對於更正確的版本,你應該自己遍歷表達式,但在這個例子中,我有點懶惰寫這一切,最好使用簡單的方法。

暫無
暫無

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

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