将system.\u comobject转换为.net字符串
我在获取类属性的值时遇到了一些问题。实施结构如下:将system.\u comobject转换为.net字符串,.net,com,com-interop,.net,Com,Com Interop,我在获取类属性的值时遇到了一些问题。实施结构如下: 用C#编写的COM对象有一个COM可见包装器类,该类使用两个具有ComVisible(false)属性的类 从经典ASP页面调用COM对象以执行某些工作 非COM可见类具有.NET类型的某些属性(主要是字符串类型)。问题是,当在类中的各种方法中访问这些属性时,属性返回System.\u ComObject作为它们的值,而不是它们的实际内容。我尝试过使用ToString(),显式地将它们转换为它们的.NET类型,并在获取属性类型后使用Invoke
[ComVisible(false)]
public class Node
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public string DataType
{
get;
set;
}
}
[ComVisible(false)]
public class Builder
{
public Node Root;
ASPTypeLibrary.Response response;
public void SetUpProperties(object resp, string name, string dataType){
response = (ASPTypeLibrary.Response)resp;
Root = new Node();
Root.Name = name;
Root.DataType = dataType;
response.Write(Root.Name.ToString()); // This works fine
response.Write(Root.DataType.ToString()); // This works fine
PrintNode();
}
public void PrintNode()
{
response.Write(Root.Name.ToString()); // This works fine. Prints actual content.
response.Write(Root.DataType.ToString()); // This prints System._ComObject
}
}
[ComVisible(true)]
public class Wrapper
{
/* Required constructors are definded */
public void Start(object resp)
{
Builder bld = new Builder();
bld.SetUpProperties(resp, "Node 1", "Type 1");
}
}
生成器类被实例化,SetProperties()从包装器类调用,包装器类使用Server.CreateObject()在经典ASP页面中创建。系统.\u ComObject在PrintNode()中打印。我不确定除了ToString()之外还应该使用什么方法来获取属性的内容
谢谢,您是否尝试过:
System.Runtime.InteropServices.Marshal.PtrToStringBSTR()
?请添加一些代码来说明您所描述的内容(从您的描述中不容易理解您正在做什么,或者您在哪里看到系统。\u ComObject实例)。.NET类的字符串值属性始终返回字符串实例。您的代码中肯定有其他内容。不存在字符串文字“类型1”变形为系统的情况。你的片段没有意义。制造麻烦的人应该负责。