我創建了一個新的類別庫。
添加一個名為 MyCountry.resx 的新 resx 檔案并向其中添加一些資源。
Name 和 Value 兩個條目。我將 Access Modifier 設定為 Public,這樣我就可以參考這個類并在其他專案中使用它。
我創建了另一個新的類別庫并參考了上面的 CL,當我撰寫以下代碼時,一切似乎都運行良好:
var someValue = ClassLibrary.MyCountry.GetName;
然后我決定更改相同類宣告的屬性以使用相同的資源條目。作業屬性示例(為清楚起見縮短)
[Tree("SomethingHere", "SomethingThere")]
這有效,但是當我將其更改為
[Tree(ClassLibrary.MyCountry.GetName, "SomethingThere")]
我收到錯誤
屬性引數必須是屬性引數型別的常量運算式、typeof 運算式或陣列創建運算式。
所以改成
[Tree(typeof(ClassLibrary.MyCountry.GetName), "SomethingThere")]
但后來我收到
型別名稱“GetName”在型別“MyCountry”中不存在
當我知道它對上面顯示的代碼起作用時。
是否可以讓屬性以我所展示的方式使用來自 resx CL 的值,我是否遺漏了什么或不可能?
uj5u.com熱心網友回復:
正如編譯器在警告中指出的那樣。它需要一個在編譯時已知的值,但.resx檔案的值在運行時加載。
您可以在MyCountry.Designer.cs沿MyCountry.resx檔案自動創建的檔案中查找。
我想到了您的問題的 2 個解決方案:
- 您創建一個
class包含所有常量的物件。
public class MyCountry
{
public const string GetName = "Lorem Ipsum";
}
- 您創建/使用從 中創建此類的源生成器,
.resx以便編譯器可以在編譯時訪問它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313595.html
