Mam fragment kodu w moim programie, który rozróżnia klasy generowane przez kompilator, sprawdzając, czy zawierają one "DisplayClass" w nazwie typu.
po przeczytaniu this answer, myślę, że potrzebuję lepszego sposobu. Jak wyodrębnić klasy generowane przez kompilator z klas użytkowników w .NET?Jak wyodrębnić klasy generowane przez kompilator z klas użytkowników w .NET
6
A
Odpowiedz
13
Sprawdź zajęcia dla atrybutu CompilerGenerated
odróżnienia kompilatora generowane klas z drugiej
W reflektorze te Pokaż klasy mogą być postrzegane w ten sposób:
[CompilerGenerated]
private sealed class <>c__DisplayClass1
{..}
7
Ta odpowiedź bardzo mi pomógł na zewnątrz! Oto kod Musiałem dodać do sprawdzenia Type
dla CompilerGeneratedAttribute
jak Valentin Kuzub wymienić:
using System.Runtime.CompilerServices;
//...
bool IsCompilerGenerated(Type t)
{
var attr = Attribute.GetCustomAttribute(t, typeof(CompilerGeneratedAttribute));
return attr != null;
}
Uwaga: jeśli Wygeneruj kod samemu, użyj 'GenerateCodeAttribute' zamiast' CompilerGeneratedAttribute', jak [wytłumaczyć David Kean na tym blogu MSDN] (http://blogs.msdn.com/b/codeanalysis/archive/2007/04/27/correct-usage-of-the-compilergeneratedattribute-and-generatedcodeattribute.aspx). – Abel