[英]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.