3

Roslyn의 스크립팅 엔진을 통해 자체 C# 콘솔을 구현하는 응용 프로그램이 있습니다. 나는 이미 명령문을 실행하는 코드를 얻었고 가능한 반환 값을 얻었으므로 콘솔에 "멋진"문자열을 출력하고 싶습니다. "ToString()"을 호출하는 간단한 접근법은 보통 사람이 읽을 수없는 출력을가집니다.직접 창 출력 프로그래밍 방식으로

나에게 가장 좋은 해결책은 Visual Studio의 "직접 실행 창"에서 사용하는 것과 동일한 종류의 검사 출력을 갖는 것입니다.

그래서 예를 들어 내 문 내가 동등한 출력을하고 싶은 경우 나에게

System.String[] 

을 제공하는 새로운 문자열 [] { "ASD"}, 그럼 그냥 ToString을 (호출)로 평가되면 직접 실행 창 - 다음과 같은 내용 :

{string[1]} 
    [0]: "asd" 

그렇다면 직접 실행 창에서 사용하는 것과 동일한 변환을 호출하는 방법을 아는 사람이 있습니까?

+2

내가 [여기] 한 바와 같이 "개체 폐기장"을 사용하고이를 달성에있어 가장 가까운 :

string humanReadable = JsonConvert.SerializeObject(someObj, Formatting.Indented); 

Nuget 패키지 :이 대한 Json.NET을 사용했다/questions/360277/what-is-the-the-best-way-to-dump-whole-objects-to-a-log-in-c) 또는 [여기] (http://stackoverflow.com/questions/1347375/ C-sharp-object-dumper) – GolfWolf

+0

감사합니다. 매우 흥미 롭습니다. 나는이 질문을 실제로 직접적인 윈도우 변환에 대한 API 액세스를 찾기 위해 열어두기를 바란다. (내 사용자도 Visual Studio를 사용하기 때문에 가장 좋고 "가장 익숙한"출력이 될 것이다.) 그러나이 링크 분명히 "인간이 읽을 수있는 덤핑"의 좋은 예를 담고있다. – Imi

답변

1

단일 String을 포함하는 String 배열이 있고 배열에 대해 .ToString()을 호출 한 것으로 보입니다.

[0].ToString() 

.ToString() 

을 대체하고 당신에게 예상 된 결과를 줄 것이다 있는지 확인하십시오.

+0

문자열 배열을 사용하는 것은 ToString()의 표준 구현과 비교하여 직접 실행 창의 멋진 출력을 보여주는 간단한 예제 일뿐입니다. 마음에있는 코드는 모든 종류의 객체에서 작동해야합니다. – Imi

+0

실제 예를 들어주세요 .ToString()을 호출하는 개체의 종류는 무엇입니까? 그것은 당신이 스스로 정의한 수업입니까? 이 경우 해당 클래스의 ToString() 메서드를 재정의하고 원하는 텍스트를 반환해야합니다. – Daniel

+0

모든 종류의 개체 (또는 "대부분")와 잘 어울리는 일반 콘솔이기 때문에 실제 예제를 제공 할 수 없습니다. 특정 예 (위의 문자열 []과 같음)는 알 수없는 객체를 표시하는 * 제네릭 * 문제를 산만하게합니다. 나는 클래스를 제어하지 않기 때문에 대상 객체에 어떤 메소드도 구현할 수 없다. 그리고 콘솔 코드를 작성할 당시에는 클래스가 존재하지 않을 수도있다. 물론, 리플렉션과 표준 타입에 대한 테스트를 사용하여 내 자신의 디스플레이 코드를 작성할 수는 있지만, 재사용 할 수있는 빌드 인 메소드에 관한 것입니다. – Imi

관련 문제