Bonjour,

J'ai 3 projets: projet C#, projet C++ et projet C++/CLI Wrapper. Mon but est d'utiliser des classes natifs c++ dans un projet C#. C'est pourquoi j'ai créé un projet C++/CLI.
Dans mon projet C++/CLI j'ai 2 classes, classA et classB.

ClassA:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//classA.h
 
#pragma once
#include "classB.h"
 
using namespace System;
 
namespace Wrapper {
 
public ref class ClassA
{
public:
    ClassA();
    virtual ~ClassA();
 
    void setProject( String^ i_project );
 
private:
    String^ m_project;
    ClassB^ m_classB;
 
};
 
}
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//classA.cpp
 
#include "stdafx.h"
#include "classA.h"
 
using namespace Wrapper;
 
 
ClassA::ClassA()
{
    m_classB = gcnew ClassB();
 
}
 
ClassA::~ClassA()
 
{
    if (m_classB)
        delete m_classB;
}
 
void ClassA::setProject( String^ i_project )
{
    m_classB->setProjectFromClassA( i_project );
}
Class B:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//classB.h
 
#pragma once
 
using namespace System;
 
namespace Wrapper {
 
    public ref class ClassB
    {
    public:
        ClassB();
        virtual ~ClassB();
 
        inline void setProjectFromClassA( String^ i_project ) { m_project= i_project; };
        void methodB();
 
    private:
        String^ m_project;
 
    };
 
}
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//classB.cpp
 
#include "stdafx.h"
#include "classB.h"
 
using namespace Wrapper;
 
 
ClassB::ClassB()
{
 
}
 
ClassB::~ClassB()
{
 
}
 
void ClassB::methodB()
{
    String^ test = m_project;
}
Dans mon projet C#, je voudrais réutiliser ces 2 classes A et B:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Wrapper;
 
namespace CSharpInterface
{
    public partial class Program
    {
        public ClassA myclassA = new ClassA();
        public ClassB myclassB = new ClassB();
        public void test()
        {
            myclassA.setProject("test");
            myclassB.methodB();
        }
 
 
        static void Main(string[] args)
        {
            Program myprogram = new Program();
            myprogram.test();
        }
    }
}
Mais j'ai un problème lors du debug dans le projet C#.Le string test dans la methodB() de classB reste toujours null. Pourquoi? Comment dois-je implémenter mes classes A et B, ainsi que mon projet C# pour que je puisse bien récupérer le string test dans la methodB()? Avez-vous un exemple de code svp? Je suis forte débutante et un exemple de code m'aiderait beaucoup.

Merci pour votre aide svp.

Cordialement,