C# 如何以字符串形式获取图像资源的名称

C# 如何以字符串形式获取图像资源的名称,c#,image,embedded-resource,C#,Image,Embedded Resource,我尝试了几种方法来获取名称,包括调查PropertyItems和老式的ToString()方法来尝试以字符串形式获取图像资源的名称 我在一个资源文件中选择了一组名为的图像。使用resource.imageName获取要显示的图像没有问题。我想尝试将imageName作为字符串,以减少代码中其他地方的错误和打字错误 使用resource.imageName.ToString()为我提供了字符串System.Drawing.Bitmap您可以创建一个函数: public static string

我尝试了几种方法来获取名称,包括调查
PropertyItems
和老式的
ToString()
方法来尝试以字符串形式获取图像资源的名称

我在一个资源文件中选择了一组名为的图像。使用
resource.imageName
获取要显示的图像没有问题。我想尝试将
imageName
作为字符串,以减少代码中其他地方的错误和打字错误


使用
resource.imageName.ToString()
为我提供了字符串
System.Drawing.Bitmap

您可以创建一个函数:

public static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)
{
    return (propertyExpression.Body as MemberExpression).Member.Name;
}
这不是我想出来的,我从另一个主题中获取了它,并运行它以查看它是否有效,但我的浏览器崩溃了,我找不到指向原始主题的链接。我会编辑我的文章,只要我找到它

编辑:这就是我从中获取代码片段的地方。祝你好运


Edit2:如果您能够轻松地获取resource.imageName,那么只需将其传递给GetPropertyName函数即可。如果没有,我想我的答案是不完整的

在Visual Studio 2015中,您可以使用


bmp=Resources.imgname将出现编译错误。如果输入错误,使用字符串变量获取它们将导致运行时错误。谢谢,这很有效!不需要类名位,并将inst替换为资源文件insteadi use VS Express 2010
public class ClassName {
   public Foo { get; set; }
}
...
...
...
var inst = new ClassName();
var propertyName = GetPropertyName(() => inst.Foo);
string s = nameof(Resource1.myfile); // s = "myfile"