は、私は、このソリューションは喜んで働いていたと私は、この属性を追加しました:奇妙な属性エラー
[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-to-emit-file-name-and-line-number-when-reporting-compile-time-error)を指定します。私は行って、そのバグレポートに 'params 'を使って状況をコメントします。 –