1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Data.Entity
{
using System.Data.Common;
using System.Reflection;
public class GenericProviderFactory<T> : DbProviderFactory
where T : DbProviderFactory
{
public static GenericProviderFactory<T> Instance = new GenericProviderFactory<T>();
private GenericProviderFactory()
{
var providerTable =
(DataTable)
typeof(DbProviderFactories).GetMethod("GetProviderTable", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
var row = providerTable.NewRow();
row["Name"] = "GenericProviderFactory";
row["InvariantName"] = InvariantProviderName;
row["Description"] = "Fake GenericProviderFactory";
row["AssemblyQualifiedName"] = GetType().AssemblyQualifiedName;
providerTable.Rows.Add(row);
}
public string InvariantProviderName
{
get { return "My.Generic.Provider." + typeof(T).Name; }
}
public override DbConnection CreateConnection()
{
return new GenericConnection<T>();
}
}
}
|