.NET

2011-06-20 22 views
6

'daki kullanıcı sınıflarından derleyici tarafından oluşturulan sınıflar nasıl dağıtılır Programımda, derleyici tarafından oluşturulan sınıfları, türünde "DisplayClass" bulunup bulunmadığını kontrol ederek ayıran bir kod parçam var.
this answer'u okurken, daha iyi bir yola ihtiyacım var. Derleyici tarafından oluşturulan sınıfları .NET'teki kullanıcı sınıflarından nasıl ayırt edebilirsiniz?.NET

cevap

13

Kontrol sınıfları diğer

reflektör olarak

http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.compilergeneratedattribute.aspx

gelen derleyici oluşturulan sınıfları ayırt etmek özniteliği CompilerGenerated için olanlar Ekran sınıfları böyle görülebilir: Bu cevap beni gerçekten yardımcı

[CompilerGenerated] 
private sealed class <>c__DisplayClass1 
{..} 
+0

Not: Burada Valentin Kuzub belirtildiği gibi CompilerGeneratedAttribute için Type kontrol etmek eklemek için gerekli kod Bu MSDN blogunda David Kean] (http://blogs.msdn.com/b/codeanalysis/archive/2007/04/27/correct-usage-of-the-compilergeneratedattribute-and-the-generatedcodeattribute.aspx). – Abel

7

dışarı! [Tarafından açıklandığı gibi AutoGenerate kod kendiniz `GenerateCodeAttribute` kullanırsanız, yerine` CompilerGeneratedAttribute` arasında:

using System.Runtime.CompilerServices; 

//... 

bool IsCompilerGenerated(Type t) 
{ 
    var attr = Attribute.GetCustomAttribute(t, typeof(CompilerGeneratedAttribute)); 
    return attr != null; 
}