0

我在程序集 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();

然而,它得到了很好的描述,但类别返回空值。如果有人可以帮助我解决这个问题,我将不胜感激。谢谢

编辑

根据评论中的要求,这是我在程序集 B 中的 AssemblyInfo.cs 文件:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using AssemblyANameSpace;

[assembly: AssemblyTitle("Name")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCategory("Core")]

...
4

1 回答 1

0

我做了以下事情:

  1. 我创建了 AssemblyA、AssebmlyB 和 WindowsFormApplication1
  2. 我将包含 AssemblyCategoryAttribute 的 AssemblyA 引用添加到 AssemblyB 和 WindowsFormApplication1
  3. 我将 AssemblyCategory 属性添加到 AssemblyB

这似乎对我有用:

string assemblyFile = @"D:\My Documents\Visual Studio 2008\Projects\ClassLibrary1\bin\x64\Debug\AssemblyB.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();
于 2012-09-26T18:40:40.653 回答