2011-06-16 35 views
7

.NET 4.0 Web Uygulaması (web sitesi değil) ve PostSharp 1.5 çalıştırıyorum. OnMethodBoundaryAspect temel sınıfını kullanarak yürütmek için OnEntry geçersiz kılma yöntemini alamıyorum. İşte bazı ilgili kod:PostSharp OnMethodBoundaryAspect OnEntry Çalışmıyor

Bir şey mi eksik? OnEntry yöntemine asla vurmaz. Ayrıca PostSharp.dll ve PostSharp.Laos.dll bağımlılıkları yeni 2.0 sürümü ile değiştirmeyi denedim. Herhangi bir fark yaparsa MyUsageClass StructureMap tarafından başlatılır.

+0

Kullanım ILSpy (veya reflektör) sonra ve yöntem sonra derleme süresi inceleyin. Hedef emthod'unuzun, etrafına sarılmış bir deneme/yakalama olmalı ya da en azından yöntem gövdesinin en üstündeki Aspect'in OnEntry yöntemine yapılan bir çağrı olmalıdır. –

+0

Çok havalı. Şu anda ILSpy indiriyorum .... Birazdan geri göndereceğim. Teşekkürler! – a432511

+0

Tamam. ILSpy aracılığıyla yönteme baktığımda, yöntem gövdesinin üst kısmında OnEntry'ye bir çağrı göremiyorum. – a432511

cevap

2

Evet, her devin PostSharp yüklü olması gerekir. Sadece başlangıç ​​sürümünü kullanıyorsanız, o zaman ücretsizdir.

Bunu size kodun gösterilmesi için bir yanıt olarak gönderin. Testim kodu

class Program 
    { 
     [Monitor] 
     static void Main(string[] args) 
     { 

     } 
    } 

    [Serializable] 
    public class MonitorAttribute : OnMethodBoundaryAspect 
    { 
     public override void OnEntry(MethodExecutionArgs args) 
     { 
      Console.WriteLine("OnEntry"); 
     } 
    } 

kod derleme

internal class Program 
    { 
     [CompilerGenerated, DebuggerNonUserCode] 
     internal sealed class <>z__Aspects 
     { 
      internal static MethodBase m1 = MethodBase.GetMethodFromHandle(ldtoken(Main())); 
      internal static readonly MonitorAttribute a0 = (MonitorAttribute)<>z__AspectsImplementationDetails.aspects1[0]; 
     } 
     private static void Main(string[] args) 
     { 
      Program.<>z__Aspects.a0.OnEntry(null); 
     } 
    } 
+0

Tamam, sadece PostSharps web sitesindeki belgelere baktım ve makinemde tam bir PostSharp yüklemesi yapmam gerekiyor gibi görünüyor. Yardımların için teşekkür ederim! – a432511

İlgili konular