Wenn Sie [DebuggerDisplay("{DDBpp2()}")]
auf die Klasse setzen sich, wird es die bytes[]
Anzeige verschoben int16 Inhalt im Debugger - für die Klasse:
Es macht keinen Unterschied, ob Sie Bpp
als Mitglied oder Eigenschaft implementieren und ihm mehr Attribute zu geben, hilft auch nicht.
[DebuggerDisplay("{DDBpp2()}", Name = "{DDBpp2()}", TargetTypeName = "{DDBpp2()}", Type = "{DDBpp2()}"]
public byte[] Bpp { get; set; } = new byte[2];
Vielleicht liegt es an der Klasse setzen hilft Ihnen aus:
[DebuggerDisplay("{CDBpp2()}")]
[DebuggerDisplay("{DDBpp2()}")]
public class A
{
[DebuggerDisplay("{DDBpp2()}", Name = "{DDBpp2()}", TargetTypeName = "{DDBpp2()}", Type = "{DDBpp2()}")]
public byte[] Bpp { get; set; } = new byte[2] { 255, 255 };
public byte[] Cpp { get; set; } = new byte[2] { 11, 28 };
public string CDBpp2() => ToDebugStr(Cpp);
public string DDBpp2() => ToDebugStr(Bpp);
string ToDebugStr(byte[] b)
{
short result;
if (BitConverter.IsLittleEndian)
{
var bppCopy = new byte[2];
b.CopyTo(bppCopy, 0);
Array.Reverse(bppCopy);
result = BitConverter.ToInt16(bppCopy, 0);
}
else
{
result = BitConverter.ToInt16(b, 0);
}
return result.ToString();
}
}
Wenn Sie einen genauen Blick auf die gegebenen Beispiele auf der MSDN-Dokumentation haben, werden Sie sehen, dass das Attribut immer nur angewendet wird, auf Klassenebene - ich bin allerdings ratlos, warum sie das Attribut dann nicht auf Klassen beschränkt haben.
Ich schaute auf die source of debuggerDisplayAttribute.cs - es ist anwendbar auf mehr als Klassen und Sie können sogar mehrere Male verwenden.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Delegate | AttributeTargets.Enum | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Assembly, AllowMultiple = true)]
Mein erraten wäre, dass VS nicht alle möglichen Ergebnisse auf Mitglieder/Eigenschaften/etc nicht implementiert. für die IDE und deshalb funktioniert es nicht. Wenn Sie das Attribut mehrmals angeben, wird nur die erste in der Debugger-Ansicht verwendet: siehe mein Beispiel und debugg es.
Wie bereits in einer Antwort erläutert, sollte das Attribut zur Klasse gehen. Wenn Sie es für ein Mitglied benötigen, sollte Ihr Mitglied selbst eine Klasse sein. Wenn die Daten zu komplex sind, um angezeigt zu werden, macht Ihre Klasse wahrscheinlich selbst zu viel Arbeit. – Phil1970