2014-11-27 3 views
4

은이 코드를 사용하여 파일을 직렬화하는 방법을 만드는거야 형식 '을 찾을 수 없습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) c : \ users \ erik \ documents \ visual 스튜디오 2013 \ Projects \ FileSerializer \ FileSerializer \ Class1.cs 16 65 FileSerializer 저장 파일 XmlSerializer를

왜 이런거야?

** 작동 EDIT *

새로운 코드 :

 public void Save(Object file, String path, Type type) 
    { 
     // Create a new Serializer 
     XmlSerializer serializer = new XmlSerializer(type); 

     // Create a new StreamWriter 
     TextWriter writer = new StreamWriter(path); 

     // Serialize the file 
     serializer.Serialize(writer, file); 

     // Close the writer 
     writer.Close(); 
    } 

    public object Read(String path, Type type) 
    { 
     // Create a new serializer 
     XmlSerializer serializer = new XmlSerializer(type); 

     // Create a StreamReader 
     TextReader reader = new StreamReader(path); 

     // Deserialize the file 
     Object file; 
     file = (Object)serializer.Deserialize(reader); 

     // Close the reader 
     reader.Close(); 

     // Return the object 
     return file; 
    } 

을 읽을 호출하여 : 호출하여

myClass newClass = (myClass)Read(file, type); 

저장 :

Save(object, path, type); 

감사합니다! 에릭

+1

'new XmlSerializer (type); +'@ 경로'에'@ '필요 없음 –

답변

5

귀하의 오류는 new XmlSerializer(typeof(type));입니다. typeof은 필요하지 않습니다. new XmlSerializer(type);이면 충분합니다.

file 개체를 serialize하고 (해당 유형을 함수에서 결정할 수 있기 때문에) 형식을 전달할 필요가 없습니다. 그래서 코드는 다음과 같이 다시 쓸 수 있습니다.

public void Save<T>(T file, String path) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(T)); 

    using (StreamWriter writer = new StreamWriter(path)) 
    { 
     serializer.Serialize(writer, file); 
    } 
} 
0
var serializer = new System.Xml.Serialization.XmlSerializer(type); 

대신

XmlSerializer serializer = new XmlSerializer(typeof(type)); 
0

XmlSerializerType 파라미터 걸린다. type은 이미 Type 유형이므로 typeof()에 전화 할 필요가 없습니다. typeof()은 대괄호 안에 클래스 이름 또는 일반 매개 변수를 넣을 때만 필요합니다.

관련 문제