2009-04-01 3 views
0

.Net 개체를 레지스트리에 저장할 수 있습니까?C# : 레지스트리에 .Net 개체 저장

일반 List<>을 레지스트리에 저장 한 다음 검색하여 다시 구문 분석합니다.

가능합니까? 아니면 수동으로 직렬화 한 다음 역 직렬화해야합니까?

[업데이트]

게시 된 답변에 따라, 나는 객체를 직렬화하고 현재 사용자의 AppData 폴더에 저장하기 위하여려고하고있다.

답변

6

왜 레지스트리가 필요합니까?

직렬화 된 객체의 이러한 종류를 저장할 수있는 적절한 장소는 사용자의 응용 프로그램 데이터 폴더 또는 Isolated Storage 보통이다. 물론 직렬화 방법은 당신에게 달려 있습니다. XML, 바이너리 등은 본질적으로 디스크에있는 파일입니다.

데이터 및 동시성 요구 사항에 따라 "로컬 데이터베이스"또는 SQL Server Express 같은 것을 고려할 수 있습니다.

일부 응용 프로그램은 MRU (Most Recently Used) 목록을 레지스트리에 저장하지만 특정 키의 모든 값을 반복하면됩니다. 나는 그 접근법을 추천하지 않는다.

+3

-1 : 질문에 답변하지 않습니다. –

0

당신은 그것을 직렬화해야합니다. 레지스트리는 프리미티브 값만 저장합니다.

0

수동으로 직렬화해야합니다.

2

그래, 당신이 직렬화하고 그것을 deserialize 할 거라고 생각해. 그러나 바이너리 블록이나 text/xml로 저장할 수 있습니다. 레지스트리 데이터에 크기 제한이있을 수 있습니다 ...

큰 질문은 "이게 좋은 일입니까?"

1

나는이 말을 처음부터 할 것이다. 이것은 정말로 나쁜 생각처럼 들린다.

당신이 이것을 주장한다면, 먼저 그것을 직렬화해야 할 것입니다. 레지스트리는 .NET 개체 삽입을 지원하지 않습니다.

7

가능, 이면 목록에 포함 된 유형이 직렬화 가능합니다. 그렇다면 직렬화하여 문자열 값으로 저장할 수 있습니다.

는하지만 아마 매우 나쁜 생각입니다. 레지스트리는 그대로 충분히 커집니다. 대신, 모든 종류의 응용 프로그램 데이터 폴더에 파일 시스템에 이런 종류의 것을 넣으십시오.

+0

제안 된 접근 방식이 좋지 않은 이유를 추가하기 위해 Upvoted. (분명히 우리는 코멘트를 작성할 때 더 이상 0의 힘을 더한 표현식을 사용할 수 없습니다.이 장소는 너무 항문이되어 가고 있습니다. 그 내용을 포함시킬 수 있는지 궁금합니다.) –

0

XML 구성 파일로이 작업을 수행 할 수있는 BCL의 기존 기능이 있으므로 레지스트리에 .NET 개체를 저장하려는 이유가 확실하지 않습니다.하지만 그것은 레지스트리에 .NET 객체를 저장할 수 있음을 의미합니다. 객체의 크기가 상대적으로 작 으면이를 수행하기를 원할 수도 있지만 어쨌든 문제가되지는 않습니다. 분명히하는 방법은 XML Serialization (공백/공백없이)을 사용하고 객체를 직렬화 된 문자열 값으로 저장하는 것입니다.