C++ cli __财产对财产

C++ cli __财产对财产,c++-cli,managed-c++,C++ Cli,Managed C++,我正在将一个项目从/oldsyntax转换为/clr,在public\uu gc类读取器中转换属性时遇到问题,该类读取器现在已成为public ref类读取器 我在.h文件中有这些属性(以及其他属性) __property void set_Xml(System::String *value); __property System::String *get_Xml(); 然后在.cpp文件中 void Reader::set_Xml(System::String *value) { i

我正在将一个项目从/oldsyntax转换为/clr,在public\uu gc类读取器中转换属性时遇到问题,该类读取器现在已成为public ref类读取器

我在.h文件中有这些属性(以及其他属性)

__property void set_Xml(System::String *value);
__property System::String *get_Xml();
然后在.cpp文件中

void Reader::set_Xml(System::String *value)
{
    if(value->Chars[0] == '<'){
        reader->put_xml(stlString(value).c_str());
    }
    else {
        reader->put_xml_file(stlString(value).c_str());
    }
}

System::String *Reader::get_Xml()
{
    return gcString(reader->get_xml(), reader->state.is_utf8);
}
void Reader::set_Xml(系统::字符串*值)
{
如果(value->Chars[0]=='注释中发布的内容包含有关属性新语法的所有信息

  • 旧:用特定的命名约定声明方法,用
    \uu属性
    修饰它们
  • 新:在类中声明一个属性块,并拥有具有附加作用域级别的方法。(注意:我不确定“附加作用域级别”是否是描述它的正确方式,请参见下文。)
对于类型为
String
的名为
Xml
的属性,语法为:

在头文件中:

public ref class Reader
{
public:
    property String^ Xml
    {  
        String^ get();
        void set(String^ value);
    }
}
在.cpp文件中:

String^ Reader::Xml::get()
{
    return whatever;
}

void Reader::Xml::set(String^ value)
{
    whatever = value;
}

我以前也看过这个链接,但它与我的情况不符。我将尝试删除_属性,并将get_Xml和set_Xml保留为普通方法。对于托管类,还需要将
*
替换为
^
,我已将它们重写为:void set_Xml(System::String^value);和System::String^get_Xml();非常感谢。我现在正在重写我的所有属性。