Skip to content

Instantly share code, notes, and snippets.

@cz75hiro
Created September 23, 2010 09:53
Show Gist options
  • Save cz75hiro/593412 to your computer and use it in GitHub Desktop.
Save cz75hiro/593412 to your computer and use it in GitHub Desktop.
interface IData //データインターフェース
{
}
public abstract class SchemaBase//DBスキーマ抽象クラス
{
public SchemaBase() { }
}
public abstract class DAOBase<TSchema, TData>//DAOパターン抽象クラス
where TSchema : SchemaBase
where TData : IData
{
public DAOBase() { }
}
public abstract class ControlerBase<TDao, TSchema, TData>//データコントローラー抽象クラス
where TDao : DAOBase<TSchema, TData>
where TSchema : SchemaBase
where TData : IData
{
}
class ControlerA<TDao, TSchema, TData> : ControlerBase<TDao, TSchema, TData>
where TDao : DAOBase<TSchema, TData>
where TSchema : SchemaBase
where TData : IData,
{
}
class ControlerB<TDao, TSchema, TData> : ControlerBase<TDao, TSchema, TData>
where TDao : DAOBase<TSchema, TData>
where TSchema : SchemaBase
where TData : IData
{
}
class Program
{
static void Main(string[] args)
{
var a = new ControlerA<daoA, schemaA, dataA>();
var b = new ControlerB<daoB, schemaB, dataB>();
var list = new List<ControlerBase<DAOBase<SchemaBase, IData>, SchemaBase, IData>>();//←冗長過ぎてキモいよね!
list.Add(a);
list.Add(b);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment