https://gall.dcinside.com/m/csharp/717

dotnet interactive의 Display를 blazor에서 쓰기dotnet interactive 쓰면 뭘 output하던 객체정보를 일케 알아서 잘 정리해서 보여주기때문에 겁나편한데,이 기능을 blazor에서 그대로 쓰고싶어 한동안 문서들을 뒤졌음.DisplayExtensionsgall.dcinside.com

위 글에서 이어짐.


상식적으로 dotnet interactive Display기능은 그냥 간단하게 개발자 편의적 유틸리티 정도의 용도이지, 고도화시키기에는 적합하지 않은데,

정신못차리고 Blazor SignalR에 연동시킬 방법을 구상해냈다.


Display를 통해 만들어진 html은 MarkupString으로 blazor에서 표시했을때 토씨하나라도 틀리게되면 브라우저상의 변경사항이 다 날아가게되는데,

html을 파싱하고 그대로 blazor에서 재구성함으로써 변경사항관리를 태그단위로 소분시킬 수 있게 만드는것이다.

성능, 최적화, 안전성 그런거 내다버리고 그저 남이만든거 같다가 억지로바꿔넣어서 내가 들고있을 코드만 최소화 시키는 부조리한 방법이다.

누구나 편히 같다쓸수있도록 정리할것까지는 없고 캡쳐만 설명하자면,

1. html태그를 blazor 랜더트리에 동적으로 삽입하는 컴포넌트를 만들고 : https://stackoverflow.com/questions/64196493

2. xml혹은 html파싱 도구를 활용해 문서를 재귀적으로 재구성시키면 된다.


처음엔 내장닷넷도구만 이용하기위해 xml로 읽었으나, 텍스트 꺽쇠들로인한 오류가 많아서 HtmlAgilityPack으로 변경하니 유연하게 잘 처리해준다.

운이 좋게도 둘이 객체구조를 거의 동일하게 잡아둬서 변경하는데 수월했다.

작업하는중에 닷넷인터렉티브에 ToDisplayTable이 업데이트되어 맞춰서 기능도 넣어줫다.