Cコードから呼び出すために使用する.NET COMオブジェクトがあります。
[EventTrackingEnabled(true)]
[ComVisible(true)]
public class ComObject : IComObject
{
private static XslCompiledTransform transformer = null;
private static string transformerXsltPath = null;
private static string TransformerXsltPath
{
get
{
return transformerXsltPath;
}
set
{
transformerXsltPath = value;
}
}
private static XslCompiledTransform Transformer
{
get
{
return transformer;
}
set
{
transformer = value;
}
}
[ComVisible(true)]
public bool TransformXML(String inputPath, String xsltPath, String outputPath)
{
// ....
if (Transformer == null || xsltPath != TransformerXsltPath)
{
Transformer = new XslCompiledTransform(true);
Transformer.Load(xsltPath, new XsltSettings(true, true), new XmlUrlResolver());
}
// ...
}
}
このメソッドを呼び出す限り、com オブジェクトの状態を維持したいと考えています。静的メンバーによって。そのため、もう一度呼び出すと、状態メンバーが初期化されます。
しかし、問題は、Transformer
オブジェクトだけが 2 回目の呼び出しで初期化されたままですが、transformerXsltPath
文字列が null に再起動されることです。
どのように可能ですか?