2010-04-06 5 views
0

내 스트림 관리자 클래스를 작성하는 방법은 무엇입니까?C# 사용자 지정 스트림 작성기 -esque 클래스 구현

기본적으로 필자는 내 머리를 감싸기 위해 노력하고 있는데, 필자의 기본 스트림에 대한 참조를 저장하는 것입니다. 예를 들어, StreamWriter를 사용하여 메모리 스트림에 쓸 때 Write()가 수행되면 기본 메모리 스트림이 기록됩니다.

포인터 또는 안전하지 않은 코드를 사용하지 않고 기본 스트림에 대한 참조를 저장할 수 있습니까? 그것이 단지 문자열 일지라도 나는 "쓰기"를 원했습니다.

정말 스트림 작성자와 관련이 거의 없으며 클래스에 참조를 저장할 수있는 방법이 궁금합니다. StreamWriter가이 문제를 해결할 수있는 가장 좋은 예였습니다.

+0

난 당신이 해결하고자하는 전반적인 문제가 무엇인지 모르지만 당신은 문제의 스트림에서 상속보다는 포장을보고 할 수 있습니다. 그냥 생각. –

답변

1

안전하지 않은 코드가 필요하지 않습니다. 함께 모은이 예제를 확인하십시오.

public sealed class StreamManipulator 
{ 
    private readonly Stream _backingStream; 

    public StreamManipulator(Stream backingStream) 
    { 
     _backingStream = backingStream; 
    } 

    public void Write(string text) 
    { 
     var buffer = Encoding.UTF8.GetBytes(text); 
     _backingStream.Write(buffer, 0, buffer.Length);   
    } 
} 
0

스트림 유형의 속성을 선언하고 값을 지정하기 만하면됩니다. 어떤 코드를 게시하면 좀 더 명확한 대답을 얻을 수 있습니다. 그래도 샘플이 있습니다.

class foo 
{ 
    public MemoryStream MyMemory { get; set; } 

    public void Write(string s) 
    { 
     MyMemory.Write(System.Text.Encoding.ASCII.GetBytes(s)); 
    } 

    [STAThread] 
    static void Main() 
    { 
     foo f = new foo(); 
     f.MyMemory = new System.IO.MemoryStream(); 

     f.Write("information"); 
    } 

} 
관련 문제