2016-02-05 56 views
0

我有幾個C#類庫的解決方案,它們是更大系統中的插件。該系統將其插件註冊到Windows的註冊表中。我想要做的是以可從編譯的DLLS中提取的方式描述註冊表項,然後將其放入文本(.reg)文件中,最好作爲構建過程的一部分。如何將c#屬性轉換爲文本內容?

是否存在此類元數據的預定義屬性?有沒有可以提取它們的命令行工具或MSBuild任務?

+0

那麼你可以輕鬆地創建自己的屬性...並可以很容易地加載程序集,並使用反射提取屬性。我建議你嘗試一下,如果遇到問題,請提出具體問題。 –

+0

感謝您的評論。這看起來像是一個「重新發明輪子」類型的問題,所以我想確保在我推出自己的解決方案之前,我沒有在框架中遺漏任何東西。 –

+1

這聽起來並不像一個特別常見的事情......將數據嵌入到屬性中,當然 - 但不是專門的註冊表鍵,然後想用它們創建一個'.reg'文件。我並不是說沒有其他人想要這樣做,但我不認爲這是一個足夠普遍的要求,你應該期望找到一個開箱即用的解決方案。 –

回答

1

想象一下這樣的屬性

[System.AttributeUsage(System.AttributeTargets.Class, 
        AllowMultiple = true) // Multiuse attribute.] 
public class RegistryKey : System.Attribute 
{ 
    public string Name {get; private set;} 
    public string Type {get; private set;} 
    public string Data {get; private set;} 

    public RegistryKey(string name, string type, string data) 
    { 
     Name = name; 
     Type = type; 
     Data = data; 
    } 
} 

與反思消耗它這樣

var attrs = System.Attribute.GetCustomAttributes(typeof(MahClass)); 
foreach (var attr in attrs) 
{ 
    if (attr is RegistryKey) 
    { 
     var name = attr.Name; 
     ... 
    } 
} 
相關問題