私は、ノードのツリー構造を生成するアプリケーションに取り組んでいます。ノードには多くのタイプがあり、それぞれに固有の動作とプロパティがあります。私は、表示名、説明、および16×16のアイコンを含むプロパティを持つ各ノードタイプを属性にしたいと考えています。属性は埋め込みリソースを参照できますか?
public class NodeTypeInfoAttribute : Attribute
{
public NodeTypeInfoAttribute(string displayName, string description, System.Drawing.Image icon)
: this(displayName, description)
{
this.Icon = icon;
}
public NodeTypeInfoAttribute(string displayName, string description, string iconPath):this(displayName,description)
{
String absPath;
if (System.IO.Path.IsPathRooted(iconPath))
{
absPath = iconPath;
}
else
{
string folder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
absPath = System.IO.Path.Combine(folder, iconPath);
}
try
{
System.Drawing.Image i = System.Drawing.Image.FromFile(absPath);
}
catch (System.IO.FileNotFoundException)
{
Icon = null;
}
}
public NodeTypeInfoAttribute(string displayName, string description)
{
this.DisplayName = displayName;
this.Description = description;
}
public string DisplayName
{
get;
private set;
}
public string Description
{
get;
private set;
}
public System.Drawing.Image Icon
{
get;
set;
}
}
私は、ファイルのパスとアイコンを指定するコンストラクタを持って注意し、System.Drawing.Image
としてのアイコンを指定するコンストラクタを:
はここでカスタムのコードは、私が作成した属性です。
最終的に私は、このような埋め込みイメージリソースでこの属性を使用できるようにしたいと考えています。
[NodeTypeInfo("My Node","Sample Description",Properties.Resources.CustomIcon)]
public class CustomNode:Node
{
...
しかし、このコードは、私は、アイコン画像とクラスのタイプ(インスタンスではなく)を関連付けることができますいくつかの他の方法がありますエラー
An attribute argument must be a constant expression, typeof expression or
array creation` expression of an attribute parameter type
返しますか?