如何从资源对象获取资源名称?

naw*_*fal 9 c# resources .net-2.0 winforms

假设我在我的资源文件夹中添加了一个exe.现在我怎么能得到资源的名称(甚至链接的完整路径,以便我仍然可以拥有文件名)作为字符串?

Properties.Resources.myApp我如何得到string "myApp".ToString()不起作用.如果嵌入文件以获取名称很重要,我可以.

编辑:我的问题不是专门获取exe资源的名称.但是那个通用的方法给了我资源的名称!例如,如果我的资源是位图图像怎么办?我需要打印"莉莉" Properties.Resources.Lily.怎么做到这一点?ToString无论如何都不会工作.

Jcl*_*Jcl 21

使用Linq表达式非常简单:

using System.Linq.Expressions;
//...
static string GetNameOf<T>(Expression<Func<T>> property)
{
  return (property.Body as MemberExpression).Member.Name;
}
// Usage:
var s = GetNameOf(() => Properties.Resources.Lily);
Run Code Online (Sandbox Code Playgroud)

s 应该是 Lily


Ben*_*Ben 9

我知道这已经很老了,但是公认的答案不再是最好的答案。从C#6.0开始,您可以使用nameof(...)

string resourceName = nameof(Properties.Resources.MyResourceName);
// resourceName == "MyResourceName"
Run Code Online (Sandbox Code Playgroud)

简单得多!