在我的C#代码中,我有一个类
[Serializable]
public class MySignal: IMySignal
{
static List<IDescription> m_Descriptions;
public string m_Comment;
public IList<string> m_Names;
}
我的C#主程序中有一个函数调用C ++ / CLI外部程序(使用.NET Remoting)。我要在此函数中传递一个字符串,一个双精度和MySignal类型的对象“ test”。
bool GenSignal(string sSignalName, double pValue, MySignal test);
在C ++ / CLI代码中,我在托管类中实现了GenSignal函数的实现。
bool ManagedScriptInterface::GenSignal(String^ sSignalName, double pValue, MySignal^ test)
{
//Debugging is stopped here
//Some code...
}
在函数中进行调试时,可以获取对象(MySignal ^测试)。在其中,我可以访问所有公共成员(m_Names和m_Comment)。但是,静态对象成员m_Descriptions(声明为static,而我在C#程序中绝对需要它)等于nullptr。
我的问题是:如何使静态对象m_Descriptions可见并在C ++ / CLI中的函数内部访问它。
我希望有人可以在这个主题上提供帮助。
非常感谢!
答案 0 :(得分:1)
我从C#中的类中删除了[Serializable],并使用了MarshalByRefObject。似乎可以解决我的问题。我在C#中没有扎实的背景,但是我认为Serializable属性不适用于我的情况,因为我正在使用.NetRemoting将Domain从C#中的一个程序更改为C ++ / CLI中的另一个程序。 可序列化属性似乎可以在当前AppDomain中创建我对象的本地副本。
这篇文章还帮助我进行了调查:Static Variable Instances and AppDomains, what is happening?