Avatar billede Droa Seniormester
27. marts 2017 - 13:23 Der er 2 kommentarer

Methode Target Attribute kun 1 gang pr klasse

Hej Eksperter

Jeg sidder med et spørgsmål omkring Attributter og valideringer

Jeg har nogen klasser jeg henter ved og skanne mit assembly for Attributter "NSValidatorAttribute".

Jeg loader dem alle i starten af mit program, før hovedrutinen begynder.

men mit problem er lidt mere et sandkorn i skoen.

jeg bruger lige pt Attributter til og angive methoder som er optionelle i sammenhæng med NSValidatorAttribute, men jeg vil gerne have så man kun kan angive een Methode til og udfør et specifikt job.

Så man kun har een Methode der f.eks gør noget på PreInit, og een methode der udføre på PostInit (pr. klasse der har NSValidatorAttribute).

min kode ser sådan her ud.


[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public class NSValidatorAttribute : Attribute
    {
        private string _NS;
        private string _Name;
        private int _Priority = 10;

        public NSValidatorAttribute(string ns, string name)
        {
            this._NS = ns;
            this._Name = name;
        }

        public virtual string Name { get { return _Name; } }
        public virtual string Namespace { get { return _NS; } }
        public virtual int Priority { get { return _Priority; } set { _Priority = value; } }
    }

    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class NSValidatorPreInitializationAttribute : Attribute
    {

    }
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class NSValidatorInitializationAttribute : Attribute
    {

    }
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class NSValidatorPostInitializationAttribute : Attribute
    {

    }

    [NSValidator("http://localhost/namespaces/item/0872", "item0872", Priority = 8)]
    public class NamespaceValidator0872 : NamespaceValidator
    {
        #region Disse vil blive triggered hver gang der et match
        /// <summary>
        /// Instruktioner til PreInit
        /// </summary>
        ///
        [NSValidatorPreInitialization] public void PreInitialization() { }
        /// <summary>
        /// Instruktioner til Init
        /// </summary>
        [NSValidatorInitialization] public void Initialization() { }
        /// <summary>
        /// Instruktioner til PostInit
        /// </summary>
        [NSValidatorPostInitialization] public void PostInitialization() { }
        #endregion


        public override bool Valid(System.Xml.XmlNode node)
        {
            throw new NotImplementedException();
        }
    }

    public abstract class NamespaceValidator
    {
        public abstract bool Valid(System.Xml.XmlNode node);
    }
Avatar billede arne_v Ekspert
28. marts 2017 - 03:58 #1
Jeg kan ikke se andre muligheder end at lade din scanner teste for det.
Avatar billede arne_v Ekspert
28. marts 2017 - 03:59 #2
AllowMultiple = false

forhindrer at du kan lade den samme metode have to forekomster af attributten, hvilket er noget andet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB