C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

C#

.net の System.Xml.Linq の XDocument/XElement で Element/Elements メソッドの挙動が意図せず null になったり空になったり、あるいはそもそも名前空間を与えたつもりの実装で例外が飛んだりした時に思い出すため、のメモ

<A xmlns:bbbbb="http://example.com/bbbbb" xmlns="http://example.com/aaaaa" > <bbbbb:Z>z-value</bbbbb:Z> <B>b-value-0</B> <B>b-value-1</B> <B>b-value-2</B> </A> とかなんとか適当に XML があって、 System.Xml.Linq.XDocument / System.Xml.Linq.XElement の Element / Elements を使おうとした…

C# こわい話: LINQ でパスのサニタイズしたくらいでテストが通らないなんてそんな事が

起きた 現象 public static class x { public static string f( string input ) { var targets = Path.GetInvalidFileNameChars(); var intermediate = from c in input where !targets.Contains( c ) select c; var result = string.Concat( intermediate )…

C#, XAML: Windows 10 の Ligth/Dark テーマ状態を確認してそれっぽいテーマを採用するアプリにする方法

// Windows のテーマが Light か Dark か取得するヘルパー using Microsoft.Win32; namespace usagi.example { static public class ThemeHelper { const string WindowsThemeRegistryKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Themes\Persona…

C#: C# コードから ECMAScript ソースを翻訳&実行する処理系を組み込む方法; WebBrowser, JScript, V8 ( ClearScript )

いくつか手段がある。 ECMAScript の Microsoft 処理系の1つ ChakraCore を内包する WPF の WebBrowser コンポーネントを組み込む方法 ECMAScript の Microsoft 処理系の1つ JScript を組み込む方法 ECMAScript の Google 処理系の V8 を組み込む方法 ECMASc…

XAML: DataContext へ Properties/MySettings.settings を XAML だけで完結して束縛する方法

前提: Visual Studio 2017 でプロジェクトを作成してWPFアプリをデザイナーを使って作る際のはなし。 1. はじめに。 C# コードで束縛する場合 // 例えば MainWindow の DataContext へ // MainWindow の ctor で Properties/MySettings.settings に // 用意…

C#: generics<T> + object 黒魔法 vs. 非ジェネリクスメソッド 実行速度編

前回の記事「C#: 組み込みの数値型を扱いたい generics の 型と IConvertible の肝っぽい事、それと object 型を暗躍させる必要性のメモ」で C# の generics で数値計算を実装すると結局 object の暗躍が必要なので実行時コストが気になるよ、でもまあ実行コ…

C#: 組み込みの数値型を扱いたい generics の <T> 型と IConvertible の肝っぽい事、それと object 型を暗躍させる必要性のメモ

// 前提; この記事の Fail とか AreEqual とかはこいつの↓ using static Microsoft.VisualStudio.TestTools.UnitTesting.Assert; // 任意の IConvertible を別の IConvertible に数値を保持して変換したい場合 public static B C<A, B>( A a ) where A : IConverti</a,>…

C#, LINQ, Lambda-expression: LINQ の query-expression の中の select 句で lambda-expression を吐かせたい。でも C# ちゃんが翻訳死しちゃったの、ってスタック・オーバーフロー・チャンスしたら .NET イケメンの Reza Aqhaei が助けてくれたメモ。

// Example-0; 突然の翻訳死が訪れるよ var xs = from v in Enumerable.Range( 0, 4 ) select w => w; こういう事をしたいけど、これじゃ C# コンパイラーちゃんが死んじゃう error CS1942: An expression type in select' clause is incorrect. Type infere…

C#: null れる class と null れない struct いずれの可能性もある object を as<T> したい場合の限界、あるいは C# らしい結論

// これはコンパイルできない(´・ω・`) // object -> T static public T As<T>( object o ) { return o as T; } // as T できるためには T に class 制約が必要。これはコンパイルできるし、期待動作するかもしれない。 // object(class=nullれる何か) -> T st</t>…

C#, WPF, XAML: System.Windows.Controls.Control が "いわゆるコントロール" の共通基底だと思い込んで実装したら TextBlock であっさり null 例外に殺された件

// 前提、 C#-7.0 using System.Windows.Controls; var c = new Control(); if ( c is Label l ) Console.WriteLine( $"Label.Content={l.Content}" ); if ( c is TextBlock t ) // <--ここでコンパイルエラーが生じてくれる。 Console.WriteLine( $"TextBlo…

C#-7.0: 滲み出すスコープ

Visual Studio の C# プロジェクトでも Error も Warning も1件も見逃さない綺麗なビルドを心掛けていますが、 Messages は見落としていました。何件か来ている。 まず、一番上を見る。 IDE0018: Variable declaration can be inlined とやら。 IDE0018 "Var…

WPF,XAML: Image に Source で入れると極端にぼやけたり何かがおかしい JPEG に遭遇してしまった時の簡単な対処方法

仕事で扱ってもいるので国土地理院の地理院地図のタイル画像データはよく使わせて頂いています。います、のですが、これがたまにメタデータだったりピクセルフォーマットだったりが奇妙な画像ファイルに遭遇する事がたびたびあります 今回は地理院地図のJPEG…

C#/.net/NuGet: nuget デビューしたはなし

usagi.cs ; わたしが欲しいと思った適当な機能たち for C# nuget -> NuGet Gallery | usagi 0.0.0 repos -> GitHub - usagi/usagi.cs: わたしが欲しいと思った適当な機能たち for C# 数年ぶりに C# の実装を書いていて「きぶん」と「おもいつき」で書いてみ…

C#: ビルド番号の自動採番の有効化と Properties.Settings.Default の Upgrade トリックの必要について

遠いむかしの記憶、 C# というか Visual Studio のプロジェクト管理システムにはバージョン番号の一部を自動採番する便利な機能があった、ような気がした。実際に執筆時点で現行製品の VS2017 で作った C# のプロジェクトの AssemblyInfo.cs にも次のコメン…

C#/JSON: Newtonsoft.Json の最も簡単な使い方

C#er には標準ライブラリーに準じてお馴染みらしい JSON を扱うライブラリー Newtonsoft.Json があるようだ。しかし、こういってはなんだがろくな解説が無い(個人の感想です。)ので私が使うにあたり最低限調査したメモを残す。 使用する主な名前空間は2つ…

.net/XAML/C#: XAML のプロパティーは Visibility 型だけど Boolean の DataContext に束縛したい場合の最適解、あるいは BooleanToVisibilityConverter について

「Boolean なプロパティー Hoge が DataContext に束縛された Window のにある何かのコントロール(下の例では Button )の Visibility プロパティーを XAML だけで簡単に Window の DataContext の Hoge に束縛したい!」と思ったんだ。 <Window ... 略 ...> ... 略 ... <Button Visibility="{Binding 😂 Hoge ? Visible : Hidden したいんだけど!!😂}"/> ... </button></window>…

C#: Windows 青魔法により別プロセスのコマンドラインを掠め取ってくる方法、または WMI の使用方法

残念な事に別プロセスの起動時に与えられたコマンドライン情報を System.Diagnostics.Process の StartInfo プロパティーの FileName や Arguments から取得はできない。それらはプロセスの起動を自身のプロセスから行う際に自身が設定した場合にのみ意味が…

C#/JSON/HTTP: .net で JSON-RPC-2.0 のクライアントを使ったら WebException が飛び ServerProtocolViolation で蹴られた件

Visual Studio で C# プロジェクトをにゃんにゃんしている土曜日だった。JSON-RPC-2.0 のクライアントを実装する必要があったので NuGet を見ると導入が簡単そうなライブラリーが幾つも見つかる。 NuGet Gallery | Packages matching jsonrpc このへんが使う…

.net./C#/UE4: UE4 製のアプリを C# から起動したり終了したりさせたい場合のメモ、あるいは閉じても閉じても殺しても死なないアプリを殺すメモ。

// Process using System.Diagnostics; // C# アプリから UE4 製のアプリ(に限らず)を起動してプロセスをハンドルする var p = Process.Start( "your-executable-path.exe" ); // 既に動作している UE4 製のアプリ(に限らず)を探してプロセスをハンドル…

C#/WPF: 10年ぶり?5年ぶり? Visual Studio で C# で XAML で WPF で

Note: 今回は技術的内容はたぶん無いよう・w・ たぶんただのエッセイだよう・w・ Visual Studio で C# を書くのはお気持ち的にはたぶん10年ぶりくらい(実際はそんなに長くないよ)。 C# でアプリを書くのは5年ちょっと振りくらい(たぶんほんと)。 C# や…