如何知道c#类是用户定义的类或c#汇编类

时间:2014-09-07 05:53:33

标签: c#

我已搜索但未能知道如何检查类是用户定义的类还是c#.net程序集类。请帮助我。当我使用汇编时,我需要知道哪些类是用户定义的,哪些不是?我还需要知道类属性类型。

3 个答案:

答案 0 :(得分:0)

尝试按F12,然后检查班级定义。也许它可能有所帮助。

答案 1 :(得分:0)

不太清楚你的意思,但如果你检查

yourObj.GetType().Assembly.Location

(或.CodeBase)你会得到一个提示。您需要将字符串与预期位置匹配。

您还可以使用属性,例如:

var compAttr = yourObj.GetType().Assembly
    .GetCustomAttribute<AssemblyCompanyAttribute>();
var name = compAttr != null ? compAttr.Company : null;

需要using System.Refelection;。 (在旧版本(.NET 4及更早版本)中,反射的语法有点复杂。)

如果制作&#34;用户定义的&#34;代码,您可以申请:

[assembly: MadeByMe]

到您的每个项目(需要编写public class MadeByMeAttribute : Attribute)。然后搜索该属性,因为它肯定永远不会出现在BCL程序集中。

答案 2 :(得分:0)

您可以选择检查程序集的公钥标记,以检查它是否与Microsoft的公钥标记匹配:

试试这个扩展方法:

public static bool IsMicrosoftAssembly(this Assembly assembly)
{
    return assembly.GetName().GetPublicKeyToken()
           .SequenceEqual(typeof(int).Assembly.GetName().GetPublicKeyToken());
}

像这样使用:

var n = typeof(YourType).Assembly.IsMicrosoftAssembly();