Net framework 5, а также среды Visual Studio 2012 и C#


создание иерархии типов, производных от Exception



Download 6,27 Mb.
Pdf ko'rish
bet479/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   475   476   477   478   479   480   481   482   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

создание иерархии типов, производных от Exception
В приложении-примере 
ExceptionTree
(исходный текст см. далее) описанные 
концепции используются, чтобы загрузить в домен приложений определенное 
подмножество сборок и показать все типы, которые в конечном итоге наследуют от 
типа 
System.Exception
. Кстати, это программа, которую я написал, чтобы создать 
иерархию исключений, приведенную в главе 20.


647
Производительность.отражения
public static void Go() { 
// Явная загрузка сборок для отражения
LoadAssemblies(); 
// Фильтрация и сортировка всех типов
var allTypes =
(from a in AppDomain.CurrentDomain.GetAssemblies()
from t in a.ExportedTypes
where typeof(Exception).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()) 
orderby t.Name
select t).ToArray();
// Построение и вывод иерархического дерева наследования
Console.WriteLine(WalkInheritanceHierarchy(new StringBuilder(), 0,
typeof(Exception), 
allTypes)); 
}
private static StringBuilder WalkInheritanceHierarchy( 
StringBuilder sb, Int32 indent, Type baseType, IEnumerable allTypes) {
String spaces = new String(' ', indent * 3);
sb.AppendLine(spaces + baseType.FullName);
foreach (var t in allTypes) {
if (t.GetTypeInfo().BaseType != baseType) continue;
WalkInheritanceHierarchy(sb, indent + 1, t, allTypes);
}
return sb;
}
private static void LoadAssemblies() { 
String[] assemblies = { 
"System, PublicKeyToken={0}", 
"System.Core, PublicKeyToken={0}", 
"System.Data, PublicKeyToken={0}", 
"System.Design, PublicKeyToken={1}", 
"System.DirectoryServices, PublicKeyToken={1}", 
"System.Drawing, PublicKeyToken={1}", 
"System.Drawing.Design, 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.Xml, PublicKeyToken={0}", 
};
String EcmaPublicKeyToken = "b77a5c561934e089"; 
String MSPublicKeyToken = "b03f5f7f11d50a3a"; 
// Получение версии сборки, содержащей System.Object.
продолжение



648
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   475   476   477   478   479   480   481   482   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish