我有這個解決方案愉快地工作,我加入這個屬性:奇怪的屬性錯誤
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)]
public class metadata : Attribute
{
string mid;
string mdescription;
Dictionary<string, string> mdata;
public string id
{
get
{
return mid;
}
}
public string description
{
get
{
return mdescription;
}
}
public Dictionary<string, string> data
{
get
{
return mdata;
}
}
public metadata(string thisid, string thisdescription, params KeyValuePair<string, string>[] thisdataarray)
{
mid = thisid;
mdescription = thisdescription;
mdata = new Dictionary<string, string>();
if (thisdataarray != null)
{
foreach (KeyValuePair<string, string> thisvaluepair in thisdataarray)
{
mdata.Add(thisvaluepair.Key, thisvaluepair.Value);
}
}
}
}
我加入這個屬性,所有的[元數據(NULL,NULL)]的幾個聲明,沒有任何錯誤。不知何故,當我編譯時,對於每個[metadata(null,null)],出現「錯誤CS0182:屬性參數必須是常量表達式,屬性參數類型的typeof表達式或數組創建表達式」,但是沒有行或列或文件,只有項目。什麼地方出了錯?謝謝。
關於缺少文件名,行號和列號:這也是可選參數的問題。我後來報告了這個問題上的一個錯誤,請參閱[報告編譯時錯誤時C#編譯器無法發出文件名和行號](http://connect.microsoft.com/VisualStudio/feedback/details/763609/c-compiler -fails到發出,文件名稱和行號,當報告方法編譯時錯誤)。我會去用'params'在bug報告中添加一條評論。 –