動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

パターン5: where T : EntityBase —基底クラス制約

出典: C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターンパターン5: where T : EntityBase —基底クラス制約

パターン5: where T : EntityBase —基底クラス制約 (csharp)#778e81884812
//基底クラス
public abstract class EntityBase
{
    public int Id { get; set; }
    public DateTime CreatedAt { get; set; }
}
 
public class User : EntityBase
{
    public string Name { get; set; }
}
 
public class Order : EntityBase
{
    public decimal Amount { get; set; }
}
 
// ✅ TはEntityBaseの派生のみ
public class Repository<T> where T : EntityBase, new()
{
    public T FindById(int id)
    {
        var entity = new T();   // new()制約で保証
        entity.Id = id;          // EntityBase制約でIdプロパティ参照可能
        // ...実際はDBから取得して詰める
        return entity;
    }
}
 
//使い方
var userRepo = new Repository<User>();    // OK: UserはEntityBase派生
var orderRepo = new Repository<Order>();  // OK: Orderも派生
// var strRepo = new Repository<string>(); // ❌ stringはEntityBase派生じゃない
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #778e81884812
  • lines: 33
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン5: where T : EntityBase —基底クラス制約」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

9
図鑑トップ