Documentation

    Table of Content
    • CodePorting.Native Product Family
      • CodePorting.Native Cs2Cpp
        • Getting Started
          • Product Overview
          • Installation
          • Licensing
          • How to use CodePorting.Native Cs2Cpp
            • How to Use Command line to port and build Projects
            • How to Use GUI to port and build Projects
        • Developer Guide
          • Porting Simple C# Projects
            • Porting Simple Console Application
            • Porting Simple Library
            • Porting Simple NUnit Test
          • Porting Dependent C# Projects
            • Porting Dependent Console Application
            • Porting Dependent Library
            • Porting Dependent NUnit Test
          • Porting Complex C# Projects
            • How to Convert Complex C# Console Application to C++
            • How to Convert Complex C# Library to C++
            • How to Convert Complex C# NUnit Test to C++
          • Qt support
          • What Converts to What
            • AbstractClasses
            • BreakStatements
            • ClassAutoProperties
            • ClassConstructors
            • ClassEvents
            • ClassFinalizers
            • ClassGenericMethods
            • ClassIndexers
            • ClassMethods
            • ClassProperties
            • ClassStaticConstructor
            • ClassStaticMethods
            • ClassStaticProperties
            • ClassVirtualMethods
            • ContinueStatements
            • Delegates
            • DoWhileStatements
            • Enums
            • EnumTypeCast
            • Exceptions
            • ExpectedException
            • ForeachStatements
            • ForeachStatementsStd
            • ForStatements
            • GenericClasses
            • GenericDelegates
            • GenericInterfaces
            • GenericStructs
            • IfStatements
            • LambdaExpressions
            • NestedClasses
            • ReturnStatements
            • SimpleClass
            • SimpleInterface
            • SimpleStruct
            • SimpleTest
            • StandardTypeCast
            • StaticClass
            • SwitchStatements
            • TestWithSetupMethods
            • ThrowStatements
            • TryCatchFinallyStatements
            • TryCatchStatements
            • TryFinallyStatements
            • VarExpressions
            • WhileStatements
          • CodePorting Native Cs2Cpp Attributes
          • CodePorting Native Cs2Cpp Configuration File
            • CodePorting.Native Cs2Cpp Configuration File Structure
            • Attributes in Configuration file
            • Configuration file Nodes
            • Configuration file Options
          • Memory Management Model
            • Memory Management Model Description
            • Using aliasing constructor to create a smart pointer
          • Cmake Support
          • C++ code injection
          • C++ user-defined exception classes
          • Limitations and Bugs
            • Porter Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2022
            • CodePorting.Native Cs2Cpp 22.5
            • CodePorting.Native Cs2Cpp 22.4
            • CodePorting.Native Cs2Cpp 22.3
            • CodePorting.Native Cs2Cpp 22.2
            • CodePorting.Native Cs2Cpp 22.1
          • 2021
            • CodePorting.Native Cs2Cpp 21.12
            • CodePorting.Native Cs2Cpp 21.11
            • CodePorting.Native Cs2Cpp 21.10.1
            • CodePorting.Native Cs2Cpp 21.10
            • CodePorting.Native Cs2Cpp 21.9
            • CodePorting.Native Cs2Cpp 21.8
            • CodePorting.Native Cs2Cpp 21.7
            • CodePorting.Native Cs2Cpp 21.6
            • CodePorting.Native Cs2Cpp 21.5
            • CodePorting.Native Cs2Cpp 21.4
            • CodePorting.Native Cs2Cpp 21.3
            • CodePorting.Native Cs2Cpp 21.2
            • CodePorting.Native Cs2Cpp 21.1
          • 2020
            • CodePorting.Native Cs2Cpp 20.12
            • CodePorting.Native Cs2Cpp 20.11
            • CodePorting.Native Cs2Cpp 20.10
            • CodePorting.Native Cs2Cpp 20.9
            • CodePorting.Native Cs2Cpp 20.8
            • CodePorting.Native Cs2Cpp 20.7
            • CodePorting.Native Cs2Cpp 20.6
            • CodePorting.Native Cs2Cpp 20.5
            • CodePorting.Native Cs2Cpp 20.4
            • CodePorting.Native Cs2Cpp 20.3
            • CodePorting.Native Cs2Cpp 20.2
            • CodePorting.Native Cs2Cpp 20.1
          • 2019
            • CodePorting.Native Cs2Cpp 19.1
            • CodePorting.Native Cs2Cpp 19.2
            • CodePorting.Native Cs2Cpp 19.3
            • CodePorting.Native Cs2Cpp 19.4
            • CodePorting.Native Cs2Cpp 19.4.1
            • CodePorting.Native Cs2Cpp 19.5
            • CodePorting.Native Cs2Cpp 19.6
            • CodePorting.Native Cs2Cpp 19.7
            • CodePorting.Native Cs2Cpp 19.8
            • CodePorting.Native Cs2Cpp 19.9
            • CodePorting.Native Cs2Cpp 19.10
            • CodePorting.Native Cs2Cpp 19.11
            • CodePorting.Native Cs2Cpp 19.12
          • 2018
            • CodePorting.Native Cs2Cpp 18.9
            • CodePorting.Native Cs2Cpp 18.9.1
            • CodePorting.Native Cs2Cpp 18.10
            • CodePorting.Native Cs2Cpp 18.11
            • CodePorting.Native Cs2Cpp 18.12
    1. Home
    2. CodePorting.Native Product Family
    3. CodePorting.Native Cs2Cpp
    4. Developer Guide
    5. What Converts to What
    6. ClassProperties

    ClassProperties

    What's on this Page

      • Source C# Code
      • Ported Code
        • C++ Header
        • C++ Source Code

    This example demonstrates how class properties which have explicitly defined setters and getters are ported. Properties may have getter, setter, or both. Public, protected and private properties preserve their accessibility level. Internal properties become protected. Getters are ported to methods with prefix get_ and setters with prefix set_.

    Additional command-line options passed to CsToCppPorter: none.

    Source C# Code

    namespace MembersPorting
    {
        public class ClassProperties
        {
            public int PublicProperty
            {
                get { return mPublicPropertyField; }
                set { mPublicPropertyField = value; }
            }
    
            public int PublicPropertyWithoutSetter
            {
                get { return mPublicPropertyField; }
            }
    
            public int PublicPropertyWithoutGetter
            {
                set { mPublicPropertyWithoutGetterField = value; }
            }
    
            internal string InternalProperty
            {
                get { return mInternalPropertyField; }
                set { mInternalPropertyField = value; }
            }
    
            protected bool ProtectedProperty
            {
                get { return mProtectedPropertyField; }
                set { mProtectedPropertyField = value; }
            }
    
            private double PrivateProperty
            {
                get { return mPrivatePropertyField; }
                set { mPrivatePropertyField = value; }
            }
    
            private int mPublicPropertyField;
            private int mPublicPropertyWithoutSetterField;
            private int mPublicPropertyWithoutGetterField;
            private string mInternalPropertyField;
            private bool mProtectedPropertyField;
            private double mPrivatePropertyField;
        }
    }

    Ported Code

    C++ Header

    #pragma once
    
    #include <system/string.h>
    #include <cstdint>
    
    namespace MembersPorting {
    
    class ClassProperties : public System::Object
    {
        typedef ClassProperties ThisType;
        typedef System::Object BaseType;
        
        typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
        RTTI_INFO_DECL();
        
    public:
    
        int32_t get_PublicProperty();
        void set_PublicProperty(int32_t value);
        int32_t get_PublicPropertyWithoutSetter();
        void set_PublicPropertyWithoutGetter(int32_t value);
        
        ClassProperties();
        
    protected:
    
        System::String get_InternalProperty();
        void set_InternalProperty(System::String value);
        bool get_ProtectedProperty();
        void set_ProtectedProperty(bool value);
        
    private:
    
        double get_PrivateProperty();
        void set_PrivateProperty(double value);
        
        int32_t mPublicPropertyField;
        int32_t mPublicPropertyWithoutSetterField;
        int32_t mPublicPropertyWithoutGetterField;
        System::String mInternalPropertyField;
        bool mProtectedPropertyField;
        double mPrivatePropertyField;
        
    };
    
    } // namespace MembersPorting
    

    C++ Source Code

    #include "ClassProperties.h"
    
    namespace MembersPorting {
    
    RTTI_INFO_IMPL_HASH(541627203u, ::MembersPorting::ClassProperties, ThisTypeBaseTypesInfo);
    
    int32_t ClassProperties::get_PublicProperty()
    {
        return mPublicPropertyField;
    }
    
    void ClassProperties::set_PublicProperty(int32_t value)
    {
        mPublicPropertyField = value;
    }
    
    int32_t ClassProperties::get_PublicPropertyWithoutSetter()
    {
        return mPublicPropertyField;
    }
    
    void ClassProperties::set_PublicPropertyWithoutGetter(int32_t value)
    {
        mPublicPropertyWithoutGetterField = value;
    }
    
    System::String ClassProperties::get_InternalProperty()
    {
        return mInternalPropertyField;
    }
    
    void ClassProperties::set_InternalProperty(System::String value)
    {
        mInternalPropertyField = value;
    }
    
    bool ClassProperties::get_ProtectedProperty()
    {
        return mProtectedPropertyField;
    }
    
    void ClassProperties::set_ProtectedProperty(bool value)
    {
        mProtectedPropertyField = value;
    }
    
    double ClassProperties::get_PrivateProperty()
    {
        return mPrivatePropertyField;
    }
    
    void ClassProperties::set_PrivateProperty(double value)
    {
        mPrivatePropertyField = value;
    }
    
    ClassProperties::ClassProperties() : mPublicPropertyField(0), mPublicPropertyWithoutSetterField(0)
        , mPublicPropertyWithoutGetterField(0), mProtectedPropertyField(false), mPrivatePropertyField(0)
    {
    }
    
    } // namespace MembersPorting