EDIT
Also Ich überprüfe jetzt mit dem CF-Team, aber ich glaube, dass Sie einen Fehler gefunden haben. Dies zeigt, es noch besser:
public class MyAttribute : Attribute
{
public MyAttribute(UnmanagedType foo)
{
}
public int Bar { get; set; }
}
[StructLayout(LayoutKind.Sequential)]
public struct Test
{
[CLSCompliant(false)]
[MyAttribute(UnmanagedType.ByValArray, Bar = 4)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public ushort[] ArrayShorts;
}
class Program
{
static void Main(string[] args)
{
FieldInfo field_info = typeof(Test).GetField("ArrayShorts");
object[] custom_attributes = field_info.GetCustomAttributes(typeof(MarshalAsAttribute), false);
Debug.WriteLine("Attributes: " + custom_attributes.Length.ToString());
custom_attributes = field_info.GetCustomAttributes(typeof(MyAttribute), false);
Debug.WriteLine("Attributes: " + custom_attributes.Length.ToString());
custom_attributes = field_info.GetCustomAttributes(typeof(CLSCompliantAttribute), false);
Debug.WriteLine("Attributes: " + custom_attributes.Length.ToString());
}
}
Unter dem vollen Rahmen, den ich dies zurück:
Attributes: 1
Attributes: 1
Attributes: 1
Unter CF 3.5 ich diese:
Attributes: 0
Attributes: 1
Attributes: 1
So kann man es sehen, ist durchaus in der Lage der Rückgabe eines Attributs, entweder benutzerdefiniert oder innerhalb der BCL, nur nicht das MarshalAsAttribute.
EDIT 3 Okay, habe ich ein wenig mehr zu graben, und es stellt sich heraus, dass das CF Verhalten tatsächlich correct if you go by the spec ist. Es geht gegen alle Logik, aber es ist richtig.
Ich habe mit der FieldInfo für mein Beispiel oben zu tun. Ich kann versuchen, ob PropertyInfo funktioniert, aber ich frage mich, warum mein Beispiel nicht funktioniert. – SwDevMan81
boo for bugs: P Weißt du, ob es eine Arbeit gibt? – SwDevMan81
Ich denke, die Arbeit könnte nur sein, um meine eigene benutzerdefinierte Attribut zu erstellen (nur neu erfinden das Rad ich denke)? Da sieht das schon gut aus. – SwDevMan81