개체를 가져 와서 현재 상태를 기록하고 개체를 업데이트 한 다음 다른 클래스로 전달해야하는 클래스를 작성하고 있습니다. 유일한 문제는 하나의 클래스에서만 상속받을 수 있으며 프로젝트에서 클래스를 상속해야한다는 것입니다. 필요한 경우 System.IO.Stream에 관심이 있습니다. 대부분의 소켓과 IPC의 다른 메소드가 아니라면이 클래스를 자체 스레드로 이동할 수 있기 때문입니다. 주요 문제는 System.IO.Stream에 대한 인터페이스가 있습니까? 그렇지 않다면 내가 의존하는 프로젝트에 중요한 데이터를 희생하지 않고 원하는 기능을 얻을 수있는 방법이 있습니까? (나는 조금 discoherent 소리 있다면, 나는 정말 확실 미안하지 않다있어 어떻게 말씀이 질문에.)System.IO.Stream 용 인터페이스가 있습니까?
2
A
답변
5
그것은 IEnumerable<T>
이 더 잘 맞는이 같은 소리 - 스트림 주위 바이트를 전달하는 좋은,하지만 반복자 좀 더 일반적인 물체의 흐름을 나타내는 데 좋다.
스트림 (예 : 소켓) 및 생성 된 객체 (C# 반복기 블록 (yield 문 등))를 통해 읽는 것을 원할 수 있습니다. 그런 다음 처리 함수, 필터 등을 IEnumerable<T>
에서 사용할 수 있으며 나중에 소켓 (또는 다른 바이트 스트림)으로 다시 불어 넣을 수 있습니다.
질문에 대답하려면 no, Stream
에는 인터페이스가 없지만 질문의 스레딩 부분과 얼마나 관련이 있는지 명확하지 않습니다. 비동기 IO에 관심이 있습니까?
1
왜 스트림 용 인터페이스가 필요합니까? 인터페이스를 구현해도 클래스의 기능이 제공되지 않는다면 다른 클래스가 해당 기능을 제공한다는 것을 알 수 있습니다. 진짜로 다중 상속 (두 클래스의 기능을 모두 가질 수 있도록 두 개의 기본 클래스가 있어야 함)이라면 에 기본 클래스가 있어야합니다. 필요한 클래스는 Stream 자체의 서브 클래스입니다.
public class MyObject : Base Object
{
}
public class BaseObject : Stream
{
}
등?
배경/컨텍스트가 도움이 될 수 있습니다.
0
여기서 무엇을 하려는지 파악하는 것은 정말 어렵습니다.
이것은 상속에 대한 집계 후보와 같습니다. System.IO.Stream을 확장하는 대신, 사용할 객체에 하나를 전달하지 않는 이유는 무엇입니까? 이것은 속성 또는 get/set 메서드 일 수 있으며 개체를 다른 스레드로 전달하면 스트림도 함께 전달됩니다.
나는 IEnumerable으로 놀고보고 할 것이다. 내 문제의 일부는 내가 48 시간 동안 지내 왔고 피곤하다는 것입니다. –
IEnumerable을 읽은 후이 방법이 훨씬 효과적입니다. 고맙습니다. –
좋습니다 - 그러나 그것을 시도하기 전에 잠자리에 들으십시오 :) –