2009-06-13 4 views
1

L'attribut qui cible la méthode ne fonctionne pas. Le code est ci-dessous. Quel pourrait être le problème?Utilisation de ContextAttribute avec une méthode

using System; 
namespace AttributeProgram 
{ 

    class Program:ContextBoundObject 
    { 
     [TestAttribute("Hello")] 
     public void Print() 
     { 
      Console.WriteLine("How are you?"); 
     } 
     static void Main(string[] args) 
     { 
      Program obj = new Program(); 
      obj.Print(); 
     } 
    } 

    [AttributeUsage(AttributeTargets.Method)] 
    class TestAttribute : System.Runtime.Remoting.Contexts.ContextAttribute 
    { 
     public TestAttribute(string Name) : base("Test") 
     { 
      Console.WriteLine(Name); 
     } 
    } 
} 

Répondre

4

Parce que vous êtes héritant de ContextAttribute qui peut être appliquée que pour les classes, selon la documentation:

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[AttributeUsageAttribute(AttributeTargets.Class)] 
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)] 
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags = SecurityPermissionFlag.Infrastructure)] 
public class ContextAttribute : Attribute, 
    IContextAttribute, IContextProperty 
Questions connexes