2015-09-05 189 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

相關問題