C++のtemplate特殊化的な
ことをC#でやった話
自己紹介
神原 淳史 (33歳♂)
@atsukanrock
Sansan 開発部 部長
❤DDD, C#
部長のお仕事
コード書く時間がなかなかない
プロジェクトに入ると足手まとい
(velocity稼げない & 進捗の計算が立たない)
でもコード書きたい
そこで目をつけたのがSansan.LinqPad
Sansan.LinqPad
とは何ぞや
1
Sansan.LinqPad
水平分散 (sharding) された
Sansanデータベースの全shardに
SQLをぶち込む機能を提供する
NuGet privateパッケージで、
LINQPad標準装備なSansan開発部
エンジニアに日々、愛用されている
こんな感じ
プルリク出した
2
どりゃ
優しい
目的
伝えたいこだわり
BroadcastResult<TResult>クラスはこう
伝えたいこだわり
BroadcastResultExtensionsクラスがこうじゃ…!
どういうことかと言うと
ジェネリック型引数が特定の型の場合のみ
メソッドを提供するという、
C++におけるtemplate特殊化的な発想で、
BroadcastResult<TResult>のTResultが
IEnumerable<T>の時だけメソッドを生やすのを、
拡張メソッドを使って実現したった話でした
(C++忘れたので合ってるかどうか微妙ですが)
普通かも…