>我在程序集 A 中有以下代码:
[AttributeUsage(AttributeTargets.Assembly)]
public class AssemblyCategoryAttribute : Attribute {
public string Category { get; set; }
public AssemblyCategoryAttribute(string category) {
Category = category;
}
}
程序集 B 引用程序集 A 并应用此属性。最后,程序集 C 还引用程序集 A,并具有以下代码:
var assembly = Assembly.LoadFrom("..."); // Get assembly B
var description = assembly.GetCustomAttributes(false).OfType<AssemblyDescriptionAttribute>().SingleOrDefault();
var category = assembly.GetCustomAttributes(false).OfType<AssemblyCategoryAttribute>().SingleOrDefault();
但是,它得到的描述很好,但类别返回 null。如果有人能帮助我解决这个问题,我将不胜感激。谢谢
编辑
根据评论中的要求,这是我在程序集 B 中的 AssemblyInfo.cs 文件:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using AssemblyANameSpace;
[assembly: AssemblyTitle("Name")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCategory("Core")]
...
我做了以下操作:
- 我创建了AssemblyA、AssebmlyB和WindowsFormApplication1 。
- 我添加了程序集 A 的引用,其中包含AssemblyCategoryAttribute to AssemblyB 和 toWindowsFormApplication1
- 我将程序集类别属性添加到程序集B
这似乎对我有用:
string assemblyFile = @"D:My DocumentsVisual Studio 2008ProjectsClassLibrary1binx64DebugAssemblyB.dll";
byte[] assemblyBytes = File.ReadAllBytes(assemblyFile);
var assembly = Assembly.Load(assemblyBytes); // Get assembly B
var description = assembly.GetCustomAttributes(false).OfType<AssemblyDescriptionAttribute>().SingleOrDefault();
var category = assembly.GetCustomAttributes(false).OfType<AssemblyCategoryAttribute>().SingleOrDefault();