.NET

.NET 8 の新機能「時間抽象化」うれしいけど微妙

「時間抽象化」ってパッと見なんのことかわかりませんでしたが、DateTime.nowとか時関係の実装のテストで困るやつの対応なのですね。おおっ、それはうれしい。 「時間抽象化」 www.infoq.com まだ公式ドキュメントには使用例とかがほとんど無くてちょっとわ…

そして、WinUI 3

マイクロソフトがいざなう僕らの旅は、やはり終わらない。 Introducing WinUI 3 Preview 1 - Windows Developer Blog これまでの道は二又三又たくさん又あって、行き止まりって思ってた道も、結局全部また1つの道に集まってくる...。旧道もなんとか先を通し…

"C++/WinRT" Windows開発に、また新たな1ページが

喜ぶべきなのだろうか、いや、喜ばしいと思いたい。 Windows開発に、また新たな1ページが。 C++ - C++/WinRT の紹介 マイクロソフトがいざなう、僕たちの旅は、幸せに向かっているはずだ。きっと。 あの頃は(WinRTでなく)Metroだった...(遠い目) Froms WPF …

C#ではpublic公開したいときはinterfaceでなくclassが推奨されているのはあまり知られてない気がするのと、C# 6か7でInternal implementation onlyが導入されそうな件 (タイトル長すぎ)

.NET C#でライブラリを公開するときはinterfaceを公開したほうがいいという意見を見かける。UnitTestとかでmock/stubのしやすさからinterfaceを使った方が便利なことは確かにある。 でもC#では、interfaceは後からメソッド追加すると、interfaceをimplements…

今日知ったこと Windowsで音声プログラミング Microsoft.Speech と System.Speech の違い

タイトル書いたら「音声プログラミング」ってなんかヘンだな。ソースコードを音声入力で書く...、とかじゃないですよ。Windowsで音声合成でしゃべらせたり音声認識に関するライブラリを使うってことです。 音声認識 - .NET デスクトップ アプリと音声認識 結…

すっかり存在を忘れていたこと CancellationToken.Register(Action)

TaskをキャンセルするのにつかうCancellationTokenですが、キャンセルされたとき呼ばれるdelegateを登録しておくことができるんですよね。そういえば.NETにTaskが追加された頃になんかで見たことあったかもしれないけど忘れていました。 var cts = new Cance…

C#のイベントパターン(EventHandler パターン)は、今となっては、利用することを強調するほどのパターンじゃ無くてよいのでは、と思うのですよ(タイトル長い)

だって、 Func デリゲート とか Action デリゲート などができたので、EventHandlerとEventArgsは"過去の遺物"扱いでよいかと。 マイクロソフトさん、イベントパターンについては、プログラミングガイドや、クラス ライブラリ開発のデザイン ガイドラインで…

C# EventWaitHandleクラスにはAsync無いのか。ThreadPool.RegisterWaitForSingleObject

C# でイベントEventWaitHandle,(C#言語のeventデリゲートじゃなくてWin32イベントのほうね)のシグナルを待つのに、非同期のXxxAsync()は無いのか...。せめてeventデリゲートあるかと思ってた。Processクラスには終了待つイベントハンドラあるのにね。 AutoRe…

プログラミングC# 第7版

第6版持ってるけど、第7版も出たら買おうと思ってたので。C#5(.NET4.5)対応した内容を是非読みたかった。 Rxがまるまる1章分ある。RxとTask(やasync/await)の扱いの比重は、個人的には逆のほうがうれしかったな。Rxは確かにおもしろいけど。 とはいえ、C#を…

NUnitのTestCaseとTestCaseSourceはいっしょに使える

private enum MyEnum { AAA, BBB, CCC } private static IEnumerable<string> GetCaseSource() { return Enum.GetNames(typeof(MyEnum)); } [Test] [TestCase("abc")] [TestCaseSource("GetCaseSource")] public void FuncTest(string arg) { Assert.なにか; }</string>

Visual Studio Code Metrics PowerTool 11.0

いつの間にやらリリースされていました。っていうか、遅すぎでしょ。VS2012用のはもうアップデートされないと思ってたよ。 Visual Studio Code Metrics PowerTool 11.0

Team Foundation Service から チームプロジェクトを削除する

備忘録 Team Foundation Service から チームプロジェクトを削除するコマンド TFSDeleteProject.exe "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\TFSDeleteProject.exe" /collection:"https://<userName>.visualstudio.com/DefaultCollection/" <projectName></projectname></username>

INotifyPropertyChangedの実装を便利にしてくれるPropertyChanged.Fody

これ便利です。でも、 VSでWin8ストアアプリを作るとコードテンプレートに含まれてるらしいBindableBaseクラスとか、 WPFでもBindableBaseを使ってINotifyPropertyChangedを実装する - SourceChordを作ってみている方とか、 キモはCallerMemberNameAttribute…

Visual Studio 2012 更新プログラム 2 をインストール

VS2012 Update2 Updateした。 BlendがWPF対応したらしいので使ってみたかったのだが、VS2012 Express for Desktopだけ入れてる自分の環境には、そもそも"Blend for visual studio 2012"が入ってないな...。うーむ。Express for Windows8も入れにゃいかんのか…

今日知ったこと C# Encoding.BigEndianUnicode

ビッグエンディアンのユニコード文字列用のEncoding.BigEndianUnicodeプロパティあったんだ。UnicodeEncodingクラス

Task.Run()はTask.Factory.StartNew()の代わり、ではない。

Task.Run()を最初見たとき、ああ、これからはTask.Factory.StartNew()じゃなくてこれを使うようになるんだな、とか思ったのですが、Task.Run()はTask.Factory.StartNew()でできること全てができるわけじゃないので、Run()は、あくまでTaskScheduler.Default…

Reactive Extensionsがオープンソースに

ほう。こちらで公開されてます。Rxどうなってんのか実装見たいと思うことがあったので、うれしいかも。でも、元々.NETのソースコードはこちらでも見れるけどね。んでhttp://referencesource.microsoft.com/netframework.aspxを久々に見たら、.NET4.5もう追加…

Reactive Extensions v2.0 RC がリリースされてた

ことがBlogにポストされてた。まだ試してないけど。時間の扱いとエラーの扱いが変わったのかな。っていうか、長すぎるよこのポスト。長すぎて読みきれない。今日はもう寝る。

今日知ったこと Environment.UserInteractive プロパティ

なんか初めて見た気がしたので。 Environment.UserInteractive プロパティ (System) WindowsのプロセスでUIを持ってるかどうかは知りたいこともあるよね。あるかな? あと、Debugger クラス (System.Diagnostics)も知ってると便利なときあるよね。 if (!Debu…

今でも.NET Remotingのほうがよかったのにと思いたくなるんだWCF

このあたりなんか特に。 WCFはサーバ側のオブジェクト参照をクライアント側で透過的に扱えない。ギャフン。オブジェクト指向で"リモート"っていったらそれ基本でしょ。...残念。 まあ、WCFになってよかったと思う人のほうが世の中多いんでしょう(疑わしい)。…

いつか調べたい T4 (Microsoft Text Template Transformation Toolkit)

これ、ASP.NETのテンプレートエンジンを単独でも使える感じのものですね。いろいろな用途が考えられるので、ちょっとおもしろいかも。

プログラミング .NET Framework 第3版

今までその値段と重さから買うのをためらっていたが、なんか勢いで買ってみた。 タイトルにはC#とは書いてないが(原題は"CLR via C#"なのに!)、明らかにC#言語上級者向けの本。C#について、もう書籍からじゃ得るもの無いかな、と思っている人があえて読んで…

いつか調べたい System.IO.Log

.Net Frameworkでログといえば、まずはTraceSource クラス (System.Diagnostics)でしょうが、ほかにも、System.Diagnostics.Eventing 名前空間もあるし、名前的にそのものズバリのSystem.IO.Log 名前空間もある。System.IO.LogはVista以降でないとCommon Log…

Windows8 Consumer PreviewからIAsyncInfo.Start()メソッドがなくなりました

Developer Preview から Consumer Preview へのアプリの移行の「Hot start async model」にも書いてあるのですが、IAsyncInfo.Start()メソッドがなくなりました。以前は、WinRTのAPIにたくさんあるXxxAsync()メソッドの戻り値、IAsyncOperationやIAsyncActio…

Reactive Extensions v2.0 Beta

Reactive Extensions v2.0 Betaでました。 って言うか、Visual Studio 11 Betaに入ってないのかよRx。 てっきり入ってると思って、アセンブリの参照を追加しようと探しちゃったよ。

C# 5.0 async awaitと例外処理

EDIT 2014.2.15 今見るとasync/awaitで例外処理がまるでできない的に書いていますが、これは悪い例ですので。こような記事Async/Await - 非同期プログラミングのベスト プラクティス参照してください。 asyncメソッドの外側で例外がキャッチできません。 sta…

C# 5.0 async await

単純なコンソールアプリをこんなふうに書くと、 class Program { static void Main(string[] args) { FuncAsync(); Console.ReadLine(); } static async void FuncAsync() { WriteLine("FuncAsync()Begin"); int r = await Task.Run<int>(() => Worker()); WriteL</int>…

C# TaskとCancellationToken

.Net 4から、タスクのキャンセルができるようになりましたが、ちょっとわかりづらかったところ。 CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; Task.Factory.StartNew(() => { //... if (toke…

Reactive Extensions (Rx)

これは知ったとき萌えた。 http://msdn.microsoft.com/en-us/data/gg577609 http://www.atmarkit.co.jp/fdotnet/introrx/index/index.html まだなじめてないけど。自分の場合、仕事で気合い入れて使わないとなかなか身につかないんだ。

日付の計算って実装したもん負けだと思う

だから、その言語で標準的なライブラリとして提供してほしい。 日付時間関連って、きっと世界中で毎日、星の数ほどのバグコードが生成されている気がする。1/31の1ヶ月後とか、閏年とか、サマータイムとか、スクラッチから書いてバグらないなんて難しい。 意…