2011-05-03 7 views
6

this post ile ilgili olarak Derlememi csc.exe/doc'a ayarladım, böylece derleme yorumları içeren derleme için bir xml dosyasına sahibim.C# document comments

Yani var

  • MyAssembly.dll
  • MyAssembly.xml

Şimdi xml bakarak, bu IFoo tanımlanan bir arayüz

<member name="M:MyAssembly.IFoo.SetTimer(System.Int32,System.Double)"> 

sahiptir derleme ve SetTimer(int, double) bu arabirimde bir yöntemdir.

Bu dizeyi xml olarak ayrıştırma hakkında gidebilirim, ancak bu rotaya gitmeden önce, böyle bir xml dosyasından belge yorumları almak için bir MethodInfo başvurusu yapmak için kullanabileceğim herhangi bir kitaplık var. Cevaplardan birinde sandcastle'dan bahsediliyordu, ancak MSDN stili dokümantasyon jeneratörü gibi görünüyor ve yapmaya çalıştığım şeyi yapmama izin verecek hiçbir örnek bulamadım.

Teşekkür

+2

hedef burada nedir? Doküman oluşturmaya mı çalışıyorsunuz yoksa programınızı yorumlarda sakladığınız verilere erişmeye mi çalışıyorsunuz? – Justin

+0

Programımı, yorumlarda saklanan verilere erişmeye çalışıyorum. –

+0

NDoc'a göz atın, size yardımcı olabilir. http://ndoc.sourceforge.net/ –

cevap

4

Yorumlar Eğer verileri bu şekilde erişilemez anlamında montaj içine derlenmiş değildir. ek meta tanımlamak için özelliklerini kullanmayı deneyin:

public class CommentAttribute : Attribute 
{ 
    public CommentAttribute(string comment) 
    { 
    this.Comment = comment; 
    } 

    public string Comment { get; internal set; } 
} 

public static string GetComments(this ICustomAttributeProvider provider) 
{ 
    var commentAttribute = provider.GetCustomAttributes(typeof(CommentAttribute), true) 
    .Cast<CommentAttribute>() 
    .FirstOrDefault(); 

    return (commentAttribute == null ? null : commentAttribute.Comment); 
} 

Eğer MethodInfo örneği geçmek ve sadece ona GetComments() çağrı elde edebilirsiniz. türünüze On

, daha sonra ekleyin:

[Comment("This is metadata compiled in the assembly for this type")] 
public class Foo { } 
+0

Bu program ile xml dökümantasyon dosyasını paketlemek ve bunun yerine herhangi bir nedenden dolayı okumak mümkün olmadıkça (meclisin kendisine erişim mümkün değil) iyi bir çözüm. – Matt

+0

Bazı garip "çift yapı" senaryosu olmadan bunu yapabileceğinden emin değilim. Gömülü bir kaynak olarak eklenip yeniden derlenecek olan xml belgelerini oluşturan derleyici bu mu? Tek bir derlemede yapılabileceğinden emin değil misiniz? ** DÜZENLEME **: Ah, sen app yanında, yani, bu durumda –

+0

yapılabilir eğer söz konusu bağlantılı yazılan baktığınızda, çok benzer bir cevap var Ama ben okumaya bakıyordum oluşturulan xml belgeleri. Örnek için +1. Bu cevap için –