A me, il fatto che il seguente snippet stampi:
True
True
False
a console, risulta stranissimo!
using System;
using System.ComponentModel;
class Test
{
static void Main()
{
BindableAttribute a = BindableAttribute.Default;
BindableAttribute s = new BindableAttribute(BindableSupport.Default);
Console.WriteLine(a.IsDefaultAttribute()); // True
Console.WriteLine(s.IsDefaultAttribute()); // True
Console.WriteLine(a.Equals(s)); // False???
}
}
Praticamente, l'enumeration System.ComponentModel.BindableSupport, così com'è definita nel framework:
namespace System.ComponentModel
{
public enum BindableSupport
{
No,
Yes,
Default // 2???
}
}
vede il valore dell'elemento Default come 2 e non come 0 (che è quello di No). In effetti, nella definizione della classe System.ComponentModel.BindableAttribute, che wrappa l'enumeration di sopra, abbiamo:
namespace System.ComponentModel
{
// ...
public sealed class BindableAttribute : Attribute
{
public static readonly BindableAttribute Default = BindableAttribute.No;
// ...
}
}
Quindi, secondo me, il valore corretto di BindableSupport.Default sarebbe:
namespace System.ComponentModel
{
public enum BindableSupport
{
No,
Yes,
Default = No // 0
}
}
Cosa ne pensate?