2009-02-26 120 views
0

這是一個針對.NET 2.0框架的C++/CLI WinForms項目。我正在使用Visual Studio 2008.如何使它工作?DebuggerDisplay屬性不起作用

編輯:代碼片斷

[Serializable] 
[DebuggerDisplayAttribute(L"ID={EmployeeID}")] 
public ref class Employee 
{ 
    [ReadOnly(true)] 
    int nID; 
    property int EmployeeID 
    { 
     int get() 
     { 
      return nID; 
     } 
    } 
} 
+0

代碼片段?什麼是失敗? – Brian 2009-02-26 11:00:09

+0

它不會像往常一樣顯示自定義文本: 「employee = 0x058482f8 {age = 46 tracker = 0x0584f1cc nID = 14 ...}」 – 2009-02-26 11:19:13

回答

0

共識是C++ IDE不支持它。

0

定義「不工作」 ......它肯定在C#中工作(我不知道如果C++編輯器支持它 - 只是翻譯其下面在C#工程找出;-p)

using System.Diagnostics; 
[DebuggerDisplay("HiWorld={Bar}")] 
class Foo 
{ 
    public string Bar { get; set; } 
    static void Main() 
    { 
     Foo foo = new Foo { Bar = "abc" }; 
     // breakpoint and hover shows: HiWorld="abc" 
    } 
} 

我不 「做」 C++了,而是反射說:

[DebuggerDisplay(S"HiWorld={Bar}")] 
private __gc class Foo 
{ 
    // Methods 
    private: static void __gc* Main() 
    { 
     Foo __gc* <>g__initLocal0 = __gc new Foo(); 
     <>g__initLocal0->Bar = S"abc"; 
     Foo __gc* foo = <>g__initLocal0; 
    } 


    // Properties 
    [CompilerGenerated] 
    public: __property String __gc* get_Bar() 
    { 
     return this-><Bar>k__BackingField; 
    } 
    [CompilerGenerated] 
    public: __property void __gc* set_Bar(String __gc* value) 
    { 
     this-><Bar>k__BackingField = value; 
    } 


    // Fields 
    [CompilerGenerated] 
    private: String __gc* <Bar>k__BackingField; 
}; 
0

我認爲你的問題可能是你指定了寬字符串(L"ID={EmployeeID}")而不是CLR字符串(S"ID={EmployeeID}")。所以也許把L改爲S,看看你怎麼走?