c# - “MyCountry”类型中不存在类型名称“GetName”
问题描述
我创建了一个新的类库。
添加一个名为 MyCountry.resx 的新 resx 文件并向其中添加一些资源。
名称和值的两个条目。我将访问修饰符设置为公共,这样我就可以引用这个类并在其他项目中使用它。
我创建了另一个新的类库并引用了上面的 CL,当我编写以下代码时,一切似乎都运行良好:
var someValue = ClassLibrary.MyCountry.GetName;
然后我决定更改同一类声明的属性以使用相同的资源条目。工作属性示例(为清楚起见而缩短)
[Tree("SomethingHere", "SomethingThere")]
这有效,但是当我将其更改为
[Tree(ClassLibrary.MyCountry.GetName, "SomethingThere")]
我收到错误
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式。
所以改成
[Tree(typeof(ClassLibrary.MyCountry.GetName), "SomethingThere")]
但后来我收到
“MyCountry”类型中不存在类型名称“GetName”
当我知道它在上面显示的代码上工作时。
是否可以让属性以我展示的方式使用 resx CL 中的值,我是否遗漏了某些东西或者不可能?
解决方案
正如编译器在警告中指出的那样。它需要一个在编译时已知的值,但.resx
文件的值是在运行时加载的。
您可以在文件MyCountry.Designer.cs
中自动创建的MyCountry.resx
文件中查找。
我想到了针对您的问题的 2 个解决方案:
- 您创建一个
class
包含所有常量的。
public class MyCountry
{
public const string GetName = "Lorem Ipsum";
}
- 您创建/使用一个源生成器,它从中创建这样一个类,
.resx
以便编译器可以在编译时访问它。
推荐阅读
- c++ - 为什么这些类型不兼容?
- testing - 即使清除了 cookie,所有迭代的响应数据也相同
- android - Firebase Catch 异常 + Firebase 异常列表 Kotlin
- python - 是否有来自 win32api 的 GetLogicalDriveStrings() 的 mac 和 linux 版本?
- javascript - 做出反应。无法访问本地 5000 上的 API 数据。来自 CSV 文件的数据库。承诺未定义的响应
- javascript - Javascript 地图运算符
- mysql - 如何在 Flask main.py 中设置 MySQL 配置变量?
- java - 服务器存储 - Java
- python - OpenCV 不会流式传输/更新我的视频。如何更新 iimshow 窗口?
- android - 前台服务启动一次并在点击时显示活动