2016-04-10 2 views
0

Iは、C#にレガシー・コードの一部を変換するtelerikコード変換器を使用した後に作成されたが、それはエラーは、コード変換後のインスタンスを参照してアクセスすることができません

エラー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(); 
     } 
    } 
} 

エラーが行で発生しますVB.Netで

System.Xml.XmlWriter xmlWriter = xmlWriter.Create(memoryStream, xmlWriterSettings); 

次のようにコードはでした:

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 

答えて

2

ケーシングが正しくありません。 xmlWriter.CreateXmlWriter.Create(大文字のXを使用)に変更してみてください。私はコンバータがあなたにそれをなぜ変えたのか分かりません。変数と型名が同じであるため、明らかに混乱してしまいました。

+0

本当にありがとうスティーブンそれを働いている:) – Jay

2

これはちょっと、無効なようです私がこれまで使ってきた言語のほとんどでは

type varName = varName.DoSmth(); 

自動変換ツールの混乱は、型と変数名の類似点に由来します。あなたはXmlWriter

System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(memoryStream, xmlWriterSettings); 

P.S:コードを生成するためのツールを使用することをお勧めことはありませんから、静的メソッドとしてCreate()を呼び出す必要があります。

+0

ロイヤル私はそのコードを生成する良い手段ではないことを知っている私はちょうどそれがC#に変換することによって何が起こっているのが分かりやすいかもしれないと思った – Jay

関連する問題