簡體   English   中英

C#傳遞強類型屬性名稱列表

[英]C# passing a list of strongly typed property names

我正在尋找一種方法將強類型屬性名稱列表傳遞到一個方法,然后我可以解析並獲取調用者感興趣的屬性。我想這樣做的原因是有一個復制方法,僅復制用戶指定的字段。 現在,該方法采用一個字符串列表與Getvalues一起使用,並在反射中獲取屬性方法,但我想防止重構屬性和開發人員未更新的字符串。

我在這里發現了這篇文章,但不幸的是,它沒有列表。 我可以這樣做:

public static void Copy(Expression<Func<TObject>> propertiesToCopy )
{
}

然后讓來電者做

PropertyCopier<List<string>>.Copy(() => data);

但是我必須指定調用者可以擁有的屬性數量:

public static void Copy(Expression<Func<TObject>> propertiesToCopy,Expression<Func<TObject>> propertiesToCopy2, Expression<Func<TObject>> propertiesToCopy3 )
{
}

這將允許三個屬性。 無論如何將其添加到List或Queryable <>以允許與調用者想要的屬性一樣多? 我嘗試使用Add in List並使用Expression

提前致謝

編輯:今晚我找到了一些文章,提到使用C# param關鍵字來實現這一目標。 有沒有更好或更有效的方法,或者這是最好的方法嗎?

使用params關鍵字定義一個采用可變數量參數的方法:

public static void PrintPropertyNames<T>(params Expression<Func<T, object>>[] properties)
{
    foreach (var p in properties)
    {
        var expression = (MemberExpression)((UnaryExpression)p.Body).Operand;
        string memberName = expression.Member.Name;
        Console.WriteLine(memberName);
    }
}

例如,您可以調用PrintPropertyNames方法傳遞兩個表達式:

PrintPropertyNames<FileInfo>(f => f.Attributes, f => f.CreationTime);

此示例將以下輸出顯示到控制台:

 Attributes CreationTime 

C# 強類型ConfigurationBuilder列表<object>從應用設置<div id="text_translate"><p>真的在為這個苦苦掙扎——它應該這么難嗎?!</p><p> 我的 appsettings 中有一個簡單的 object 數組:</p><pre> "AppSettings": { "Names": [ { "Id": "1", "Name": "Mike" }, { "Id": "2", "Name": "John" } ] }</pre><p> 然后我有一個 class</p><pre> public class AppSettings { public List&lt;Names&gt; Names { get; set; } = new List&lt;Names&gt;(); } public class Names { public string Id { get; set; } public string Name { get; set; } }</pre><p> 我在我的應用設置中讀到:</p><pre> var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build(); var config = new AppSettings();</pre><p> 這就是出錯的地方:</p><pre> config.Names = configuration.GetSection("AppSettings:Names") //&lt;&lt;&lt;&lt; what do I do here?</pre><p> 似乎它都與IConfigurationSection相關,這沒有幫助。</p></div></object>

[英]C# strongly typed ConfigurationBuilder List<object> from appsettings

暫無
暫無

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

相關問題 將屬性列表作為強類型參數傳遞 C# 比較兩個強類型列表 C#強類型化屬性成員來描述屬性 嵌套數組屬性上的Mongo C#強類型索引 C# 強類型屬性 獲取強類型的子屬性名稱 C# 強類型ConfigurationBuilder列表<object>從應用設置<div id="text_translate"><p>真的在為這個苦苦掙扎——它應該這么難嗎?!</p><p> 我的 appsettings 中有一個簡單的 object 數組:</p><pre> "AppSettings": { "Names": [ { "Id": "1", "Name": "Mike" }, { "Id": "2", "Name": "John" } ] }</pre><p> 然后我有一個 class</p><pre> public class AppSettings { public List&lt;Names&gt; Names { get; set; } = new List&lt;Names&gt;(); } public class Names { public string Id { get; set; } public string Name { get; set; } }</pre><p> 我在我的應用設置中讀到:</p><pre> var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build(); var config = new AppSettings();</pre><p> 這就是出錯的地方:</p><pre> config.Names = configuration.GetSection("AppSettings:Names") //&lt;&lt;&lt;&lt; what do I do here?</pre><p> 似乎它都與IConfigurationSection相關,這沒有幫助。</p></div></object> 鍵入vs強烈鍵入C# 將強類型屬性名稱作為參數傳遞 強類型ArrayLists是C#中更好的選擇嗎?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM