我已搜索但未能知道如何检查类是用户定义的类还是c#.net程序集类。请帮助我。当我使用汇编时,我需要知道哪些类是用户定义的,哪些不是?我还需要知道类属性类型。
答案 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();