.NETで作る!

.NETに関するあれこれ(C#、VB.NET)

VB.NET

FileInfoクラスを拡張してWindowsの名前重複コピー時の挙動を移植する

Windows10で同じフォルダにファイルをコピーすると「 - コピー」という接尾語が付きますよね。 移動の場合だと、「(1)」、「(2)」のような番号が付きます。 これをVBで再現しようというもの。 ええ、大したネタではありません。 時間さえあれば誰でも書ける…

NLog LayoutRendererを自作する

はじめに NLog の使い方は一般的に logger.info("メッセージ") になりますが、「メッセージ(文字列)」しか指定できません。 通常はこれで問題はないのですがそれ以外の情報も出力したいことがあります。 通常のコード 例えば、SQLのロギングを考えてみます…

ExecuteReader って終了分岐が気持ち悪いから拡張メソッドでForEach文で書けるようにする

DBアプリケーションで避けては通れない ExecuteReader メソッドですが、これってイマイチですよね。 ひとまず適当にサンプル書いてみます。 Private Sub SelectRader() Using cn As IDbConnection = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;…

Unity(DI)でDBに接続してみよう

SeviceLocator経由でInstanceを作成する場合、Unityに初期化処理をいろいろと任せることができます。 ということで、DB接続処理をUnityにやらせてみようと思います。 では、比較対象としてUnityを使用せずにDB接続するコードを書いてみましょう。 Private Su…

NLog4 Configサンプル

今更ですが、NLogのバージョンが4に上がっていました。 ログファイルをアーカイブする際、ZIP化してくれるのが嬉しいですね。 www.infoq.com NLog 4.0 has been released. | NLog あと、拡張属性を自動的に呼んでくれるのも嬉しいです。ただ、バイナリファイ…

Serializerでディープコピー

元ネタ shinshu.fm 自分の古い記事が元ネタ。これ今ならもっと簡単にかける。 改善点は ファイルに書きださない。 クローン対象に属性を書く必要なし。 コード Imports System.IO Imports System.Runtime.Serialization 'ref System.Runtime.Serialization.d…

アプリケーション単位で管理できて書き込みもできる設定ファイルを自作する

元ネタ VB アプリケーション設定の保存と読み込み@Visual Basic 中学校 設定にはユーザーごとの設定である「ユーザースコープ」と、アプリケーションで共通である「アプリケーションスコープ」の2種類がある。 ユーザースコープの設定を変更した場合は、ユ…

日付の操作(月・日・時・分・秒の切り捨て、月初日、月末日)

DateTimeクラスを使えば簡単にできます。 こんな拡張メソッドを作っとくといいかもしれない。 Imports System.Runtime.CompilerServices Public Module DateTimeExtension ''' <summary> ''' 月を切り捨てます。(日付が1月1日になり、時分秒がゼロになります) ''' </summary> <Extension()></extension()>…

VB .NET4.5 Async/Await Cheat Sheet

Async および Await を使用した非同期プログラミング (C# および Visual Basic) 詳細はリンク先の通りのため詳細の説明は省き、カンペ化する。 非同期メソッド実処理 専用 Public Async Function GetMessageAsync(timer As Integer) As Task(Of String) Dim …

Private、Private Shared なFunctionをUnitTestする

VB.NET で Private Method、Private Shared Method を Unit Test します。 検証対象クラス Public Class Sample Public Sub New(prefix As String) Me.Prefix = prefix End Sub Private Property Prefix As String Private Function AddPrefix(s As String) …

WPF+Prism 5.0 でMVVMアプリを作る(画面遷移)

私が知ってるWindowsFormアプリの画面遷移は モーダルウインドウを開いて、オーナーウインドウは非表示にし、それっぽくみせる ScreenManagerクラス(非ウインドウクラス)を作って、現在画面を閉じてから次の画面を開く こんな感じです。 代わってWPFではFr…

DB接続を拡張メソッド&デリゲートで実装する(ver.2015)

DB接続処理(Connection、Transaction)は頻出するので、極力少ないコードで、かつ開閉ミスの内容に実装してみます。*1 Imports System.Runtime.CompilerServices Public Module IDbConnectionExtension <Extension> Public Sub Connect(source As IDbConnection, core </extension>…

WPF で属性を使って値検証を実装する

WPFでは値検証方法が複数用意されていますので、標準機能を理解しつつより良い実装を考えてみます。 標準機能 XAMLにValidationRuleを書く 入力データ検証 その6 カスタムValidationRule - Yuya Yamaki’s blog 入力データ検証 その6 カスタムValidationRul…

Actionデリゲートでアスペクト指向なロギング

「アスペクト指向」って書くと多少語弊がある気がしますが、横断要素を一箇所に記述できるような言語要素って意味合いでとっていただければと。 2015/02/28追記 デリゲートのコードがラッピングしていないかったので全く意味が違うものになっていました。訂…

WPF 配色を外部ファイル化する

「app.configに設定した色をコントロールの背景色に使う」とかそういうイメージ。 アイデア app.configにて色を16進数で指定。 app.configにある色情報をアクセッサクラス(Pallet.vb)を作成。 リソースファイル(xaml)にて、Palletクラスをインスタンス。…

WPF Backspaceキー で画面遷移するのをやめる

WebページではBackspaceキーで画面遷移(戻る)が発生するのは常識と化していますが、WPFのFrameでもこのようになります。 ですが、WindowsアプリでBackspaceキーを押したら画面遷移が起きると認識している人はあまりいないでしょう。 というわけで、無効化…

WPF XButton1ClickとCommandをBindingする

XButtonって? 「XButton1」といってもいまいちピンときませんが、マウスの「戻る」ボタンといえば伝わりますでしょうか。ちなみにマウスの「進む」ボタンは「XButton2」というそうです。 XButton1押したら画面遷移「戻る」が走ってほしい 先ほどFrameを見た…

WPF Frameコントロールの見た目を変える

カスタム ちなみにデフォルトだとこれ。 経緯 WPFのFrameコントロールは画面遷移のコントロールとしてとても便利ですが、ツールバー(NavigationUIVisibility)の領域が非常に無駄。戻るボタンがちっこい。してなぜかこのコントロールだけグローエフェクトが…

Kairyu 0.5.0.2 beta リリース

Kairyu - object relation mapping framework Kairyu - object relation mapping framework - Home 主な変更点 Type.MakeGenericTypeをキャッシュ化するなど、パフォーマンス改善してます。 IDbConnection.ToLoader、IDbTransaction.ToSaver拡張メソッドを用…

WPF+Prism 5.0 でMVVMアプリを作る(ダイアログ)

ダイアログに関しては以前の記事でも取り上げましたが、以下のサイトが参考になるでしょう。 Interactivity Code Sample using the Prism Library 5.0 for WPF in C# for Visual Studio 2013 Interactivity Code Sample using the Prism Library 5.0 for WPF…

VB14の新機能をつらつらと

.NET Compiler Platform &#40;&#34;Roslyn&#34;&#41; .NET Compiler Platform ("Roslyn") - New language features in VB14 VB14(Visual Studio 2015)の新機能の情報が載っていたのでメモ。 The ?. operator ?演算子 Dim x = customer.Address?.Country ' is…

Unity+app.configでIDbConnectionにインスタンスを注入する

前回の続き。こちらがもともとやりたかったこと。 前準備 NuGetから「Unity」をインストールしておいてください。 Main.vb Imports Microsoft.Practices.Unity.Configuration Imports Microsoft.Practices.Unity Imports Microsoft.Practices.ServiceLocatio…

Unity+app.configでHello, wolrd

app.configを使ってIoC(制御の反転)をしてみます。本当はもっと複雑なことをしたいのですが、意外とconfigファイルを作成するのに手間取ったのでまずは簡単な例を作って注意点を探ります。 前準備 NuGetから「Unity」をインストールしておいてください。 M…

WPF+Prism 5.0 でMVVMアプリを作る(前準備)

前段 WPFのMVVMフレームワークといえばPrismとMVVM Light Toolkitがメジャーどころです。 新規に始める場合、「どちらを学べばよいか」という非常に悩ましい問題があります。 しかし初学者が適切に選べるわけもないので、自分のやりたいこと*1、わからないこ…

MEnvironment で環境(開発、実行etc)定数を一発切り替えする

重要 Unity+app.configでIDbConnectionをインスタンスする - VB.NETで作る! Unity+app.configでIDbConnectionをインスタンスする - VB.NETで作る! こちらの記事を参考に実装されることをお勧めします。 どうしても読みたいという方は続きへどうぞ

CA1002、CA2227を避けつつシリアル化する

シリアル化処理をするクラスに配列のプロパティがあるのはよくあることですが、 何も考えずにコーディングすると以下の制約にひっかかることが多いと思います。 サンプルのコード Public Property Hoges As New List(Of Hoge) CA1002: ジェネリック リストを…

Kairyu 0.5.0.1 beta リリース

Kairyu - object relation mapping framework Codeplexにソースコード、バイナリあげました。 ドキュメントは全く更新してませんが、Topページ、Downloadページなどにコードサンプルが置いてあるので、そちら参照していただければと。 ソースコードにはユニ…

VB11.0のAsyncを使って処理遅延を監視する

タイトルにあるとおり、VB11.0(.NET Framework 4.5+Visual Studio 2012)が対象です。 概要 メイン処理が実行中かどうかを監視。想定時間内に終わらない場合は警告処理します。 アイデア メイン処理と並行して監視をする必要があるので、非同期の処理が必…

メモリにやさしい空配列の取得を学ぶ

元ネタはこちら。 C# - 空の配列を取得する方法 - Qiita C#の記事なので、これをVB.NETのコードに変えると空の配列は 'A Dim ary = DirectCast(Enumerable.Empty(Of Integer)(), Integer()) このように書くことでメモリが無駄に使われないとのこと。 ちなみ…

O/Rマッパー Kairyu ver.0.5.0.0

ORマッパー Kairyu 0.5 がほぼ形になったので公開。 Kairyu とは コネクションを隠蔽しないシンプルなO/Rマッパーです。 単調かつ大量に発生するObject Relation変換コーディングを減らすために作られました。 Kairyu - object relation mapping framework v…

. .