代码转换后无法使用实例引用访问
Cannot be accessed with an instance reference after code conversion
我有以下代码是在使用 telerik 代码转换器将一段遗留代码转换为 C# 后创建的,但它产生了错误
错误 473 无法使用实例引用访问成员 'System.Xml.XmlWriter.Create(System.IO.Stream, System.Xml.XmlWriterSettings)';用类型名称限定它
public virtual string Serialize()
{
System.IO.StreamReader streamReader = null;
System.IO.MemoryStream memoryStream = null;
try
{
memoryStream = new System.IO.MemoryStream();
System.Xml.XmlWriterSettings xmlWriterSettings = new System.Xml.XmlWriterSettings();
xmlWriterSettings.Indent = false;
System.Xml.XmlWriter xmlWriter = xmlWriter.Create(memoryStream, xmlWriterSettings);
Serializer.Serialize(xmlWriter, this);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
finally
{
if ((((streamReader) != null)))
{
streamReader.Dispose();
}
if ((((memoryStream) != null)))
{
memoryStream.Dispose();
}
}
}
错误发生在线路上:
System.Xml.XmlWriter xmlWriter = xmlWriter.Create(memoryStream, xmlWriterSettings);
在VB.Net中的代码如下:
Public Overridable Function Serialize() As String
Dim streamReader As System.IO.StreamReader = Nothing
Dim memoryStream As System.IO.MemoryStream = Nothing
Try
memoryStream = New System.IO.MemoryStream()
Dim xmlWriterSettings As System.Xml.XmlWriterSettings = New System.Xml.XmlWriterSettings()
xmlWriterSettings.Indent = False
Dim xmlWriter As System.Xml.XmlWriter = XmlWriter.Create(memoryStream, xmlWriterSettings)
Serializer.Serialize(xmlWriter, Me)
memoryStream.Seek(0, System.IO.SeekOrigin.Begin)
streamReader = New System.IO.StreamReader(memoryStream)
Return streamReader.ReadToEnd
Finally
If (Not (streamReader) Is Nothing) Then
streamReader.Dispose()
End If
If (Not (memoryStream) Is Nothing) Then
memoryStream.Dispose()
End If
End Try
End Function
这在我目前使用的大多数语言中似乎有点无效
type varName = varName.DoSmth();
自动转换工具的混淆来自于类型和变量名的相似。您需要从 XmlWriter
调用 Create()
作为静态方法
System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(memoryStream, xmlWriterSettings);
P.S.: 使用工具生成代码从来都不是好主意。
大小写不正确。尝试将 xmlWriter.Create
更改为 XmlWriter.Create
(大写 X)。我不确定为什么转换器会更改您的设置。它显然只是因为变量和类型名称相同而感到困惑。
我有以下代码是在使用 telerik 代码转换器将一段遗留代码转换为 C# 后创建的,但它产生了错误
错误 473 无法使用实例引用访问成员 'System.Xml.XmlWriter.Create(System.IO.Stream, System.Xml.XmlWriterSettings)';用类型名称限定它
public virtual string Serialize()
{
System.IO.StreamReader streamReader = null;
System.IO.MemoryStream memoryStream = null;
try
{
memoryStream = new System.IO.MemoryStream();
System.Xml.XmlWriterSettings xmlWriterSettings = new System.Xml.XmlWriterSettings();
xmlWriterSettings.Indent = false;
System.Xml.XmlWriter xmlWriter = xmlWriter.Create(memoryStream, xmlWriterSettings);
Serializer.Serialize(xmlWriter, this);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
finally
{
if ((((streamReader) != null)))
{
streamReader.Dispose();
}
if ((((memoryStream) != null)))
{
memoryStream.Dispose();
}
}
}
错误发生在线路上:
System.Xml.XmlWriter xmlWriter = xmlWriter.Create(memoryStream, xmlWriterSettings);
在VB.Net中的代码如下:
Public Overridable Function Serialize() As String
Dim streamReader As System.IO.StreamReader = Nothing
Dim memoryStream As System.IO.MemoryStream = Nothing
Try
memoryStream = New System.IO.MemoryStream()
Dim xmlWriterSettings As System.Xml.XmlWriterSettings = New System.Xml.XmlWriterSettings()
xmlWriterSettings.Indent = False
Dim xmlWriter As System.Xml.XmlWriter = XmlWriter.Create(memoryStream, xmlWriterSettings)
Serializer.Serialize(xmlWriter, Me)
memoryStream.Seek(0, System.IO.SeekOrigin.Begin)
streamReader = New System.IO.StreamReader(memoryStream)
Return streamReader.ReadToEnd
Finally
If (Not (streamReader) Is Nothing) Then
streamReader.Dispose()
End If
If (Not (memoryStream) Is Nothing) Then
memoryStream.Dispose()
End If
End Try
End Function
这在我目前使用的大多数语言中似乎有点无效
type varName = varName.DoSmth();
自动转换工具的混淆来自于类型和变量名的相似。您需要从 XmlWriter
Create()
作为静态方法
System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(memoryStream, xmlWriterSettings);
P.S.: 使用工具生成代码从来都不是好主意。
大小写不正确。尝试将 xmlWriter.Create
更改为 XmlWriter.Create
(大写 X)。我不确定为什么转换器会更改您的设置。它显然只是因为变量和类型名称相同而感到困惑。