如何知道c#类是用户定义的类或c#程序集类
本文关键字:程序集 定义 何知道 用户 | 更新日期: 2023-09-27 18:20:51
我搜索过,但不知道如何检查一个类是用户定义的类还是c#.net程序集类。请在这一点上帮助我。当我使用汇编时,我需要知道哪些类是用户定义的,哪些不是?我还需要知道类属性的类型。
按F12尝试,然后签入类定义。也许这会有所帮助。
不太清楚你的意思,但如果你检查
yourObj.GetType().Assembly.Location
(或.CodeBase
)您将得到提示。您需要将字符串与预期位置相匹配。
您也可以使用属性,例如:
var compAttr = yourObj.GetType().Assembly
.GetCustomAttribute<AssemblyCompanyAttribute>();
var name = compAttr != null ? compAttr.Company : null;
需要CCD_ 2。(在较旧的版本(.NET 4及更早版本)中,反射的语法有点复杂。)
如果您生成"用户定义"代码,则可以应用:
[assembly: MadeByMe]
到您的每个项目(需要编写public class MadeByMeAttribute : Attribute
的地方)。然后搜索该属性,因为它肯定永远不会出现在BCL程序集中。
您可以选择检查程序集的公钥令牌,以检查它是否与Microsoft:的公钥令牌匹配
试试这个扩展方法:
public static bool IsMicrosoftAssembly(this Assembly assembly)
{
return assembly.GetName().GetPublicKeyToken()
.SequenceEqual(typeof(int).Assembly.GetName().GetPublicKeyToken());
}
这样使用:
var n = typeof(YourType).Assembly.IsMicrosoftAssembly();