View Single Post
Old 07-20-2008   #4 (permalink)
Nicholas Paldino [.NET/C# MVP]


 
 

Re: Keeping the order of custom attributes

Dmitry,

You could generate the ordinals at runtime, but they would be generated in the order they are created, not in the manner you are expecting, so that's not really an option.

What exactly are you trying to do?


--
- Nicholas Paldino [.NET/C# MVP]
- mvp@xxxxxx
"Dmitry Nogin" <dmitry.nogin@xxxxxx> wrote in message news:E868EA76-654C-4FC4-95B5-E0022E139671@xxxxxx
Dear Nicholas,
Thank you a lot.

Do I have any chances to generate these ordinals automatically? Or validate its order at runtime while debug build is executed?
It looks like StackFrame.GetFileLineNumber method will not help here...


-- dmitry

"Nicholas Paldino [.NET/C# MVP]" <mvp@xxxxxx> wrote in message news:96B435C6-69DC-44BD-819E-682C1AA079BF@xxxxxx
Dmitry,

No, it isn't. However, if you are using LINQ, you can do so by exposing a property through the attrbitute which exposes the 1, 2, 3, 4, and then ordering on that property.


--
- Nicholas Paldino [.NET/C# MVP]
- mvp@xxxxxx
"Dmitry Nogin" <dmitry.nogin@xxxxxx> wrote in message news:C8A856F5-D61B-484E-918C-F12A77265B60@xxxxxx
Hi,
Is it possible to make the C# compiler to keep the order of Custom attributes as it is in the source file?

For example, I've got the following output from the code snippet below: 4, 3, 1, 2
Can I preserve the original order at the moment of compilation?


[Test(1)]

[Test(2)]

[Test(3)]

[Test(4)]

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();



foreach (TestAttribute a in GetType().GetCustomAttributes(typeof(TestAttribute), true))

MessageBox.Show(a.Ordinal.ToString());

}

}



[AttributeUsage(AttributeTargets.Class, AllowMultiple=true)]

public class TestAttribute : Attribute

{

private readonly int _ordinal;



public TestAttribute(int ordinal)

{

_ordinal = ordinal;

}



public int Ordinal

{

get { return _ordinal; }

}

}



Thanks,

-- dmitry



My System SpecsSystem Spec