2015-09-05 121 views
0

我已经尝试了几种方法来获取名称,包括调查PropertyItems和老式的ToString()方法,尝试获取图像资源的名称作为字符串。如何获取图像资源的名称作为字符串

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

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

+0

'BMP = Resources.imgname;'将是一个编译错误是有一个错字。当出现拼写错误时,使用字符串变量获取它们将导致运行时错误。 – Plutonix

回答

1

您可以创建一个功能:

public static string GetPropertyName<T>(Expression<Func<T>> propertyExpression) 
{ 
    return (propertyExpression.Body as MemberExpression).Member.Name; 
} 

然后以这种方式使用它:

public class ClassName { 
    public Foo { get; set; } 
} 
... 
... 
... 
var inst = new ClassName(); 
var propertyName = GetPropertyName(() => inst.Foo); 

这不是我是谁想出了这个,我从其他主题中拿走它并运行它以查看它是否有效,但是我的浏览器崩溃了,并且找不到原始主题的链接。我会尽快编辑我的帖子。

编辑:I've found it!这是我从中摘录的片段。祝你好运。编辑2:如果您能够轻松获取resource.imageName,那么只需将它传递给GetPropertyName函数即可。如果不是这样,我想我的答案是不完整的

+0

谢谢,那有效!没有需要classname位,而是用资源文件代替inst – Adsy2010

1

在Visual Studio 2015年,您可以使用nameof()

string s = nameof(Resource1.myfile); // s = "myfile" 
+0

我使用VS Express 2010 – Adsy2010