⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 建立异常的层次结构.txt

📁 学习c#语言的一本好书可以帮助初学者
💻 TXT
字号:
using System;
using System.Text;
using System.Reflection;
using System.Collections;
namespace TestExceTree
{
	class App
	{
		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			LoadAssemblies();
			Int32 totalTypes=0,totalExceptionTypes=0;
			ArrayList exceptionTree=new ArrayList();
			foreach(Assembly a in AppDomain.CurrentDomain.GetAssemblies())
			{
				foreach(Type t in  a.GetTypes())
				{
					totalTypes++;
					if(!t.IsClass||!t.IsPublic) continue;

					StringBuilder typeHierarchy=new StringBuilder(t.FullName,5000);
					Boolean derivedFromException=false;
					Type baseType=t.BaseType;
					while((baseType!=null)&&!derivedFromException)
					{
						typeHierarchy.Append("-"+baseType);
						derivedFromException=(baseType==typeof(System.Exception));
						baseType=baseType.BaseType;
					}
					if(derivedFromException) continue;
					totalExceptionTypes++;
					String[]h=typeHierarchy.ToString().Split('-');
					Array.Reverse(h);
					exceptionTree.Add(String.Join("-",h,1,h.Length-1));
				}
			}
			exceptionTree.Sort();
			foreach(String s in exceptionTree)
			{
				String[]x=s.Split('-');
				Console.WriteLine(new String(' ',3*x.Length)+x[x.Length-1]);
			}
			Console.WriteLine("\n---> Of {0} types ,{1} are derived from System.Exception.",totalTypes,totalExceptionTypes);
			Console.WriteLine();


		}
		static void LoadAssemblies()
		{		
			String[]assemblies={
				"System,PublicKeyToken={0}",
				"System.Data,PublicKeyToken={0}"//,
//				"System.Design,PubicKeyToKen={1}",
//				"System.DirectoryServices,PublicKeyToken{1}",
//				"System.Drawing,PublicKeyToken{1}",
//				"System.Drawing.Design,PublicKeyToken{1}",
//				"System.EnterpriseServices,PublicKeyToken{1}",
//				"System.Management,PublicKeyToken{1}",
//				"System.Messaging,PublicKeyToken{1}",
//				"System.Runtime.Remoting,PublicKeyToken{0}",
//				"System.Security,PublicKeyToken{1}",
//				"System.ServiceProcess,PublicKeyToken{1}",
//				"System.Web,PublicKeyToken{1}",
//				"System.Web.RegularExpressions,PublicKeyToken{1}",
//				"System.Web.Services,PublicKeyToken{1}",
//				"System.Windows.Forms,PublicKeyToken{0}",
//				"System.Xml,PublicKeyToken{0}"
				};
			String EcmaPublicKeyToken="b77a5c561934e089";
			String MSPublicKeyToken="b03f5f711d50a3a";

			Version version=typeof(System.Object).Assembly.GetName().Version;
			foreach(String a in assemblies)
			{
				String AssemblyIdentity=String.Format(a,EcmaPublicKeyToken,MSPublicKeyToken)+",Culture=neutral,Version="+version;
				Assembly.Load(AssemblyIdentity);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -