var odbcPath = "..\\lib\\System.Data.Odbc.dll";
var asm = Assembly.LoadFrom(odbcPath);
var aQName = asm.DefinedTypes.Where(a =\> a.FullName.Equals("System.Data.Odbc.OdbcFactory", StringComparison.OrdinalIgnoreCase)).FirstOrDefault().AssemblyQualifiedName;
var factoryType = Type.GetType(aQName);
var _DbProviderFactory = factoryType.InvokeMember("Instance", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null) as DbProviderFactory;
var con = _DbProviderFactory.CreateConnection();
С другим провайдером работает тот же код (например System.Data.SqlClient или Oracle.ManagedDataAccess.Core). С odbc я получаю ноль в InvokeMember «Экземпляр». Где я ошибаюсь?
Я пытаюсь получить DbProviderFactory System.Data.Odbc v8.0.0 посредством отражения. Это мой код [code]var odbcPath = "..\\lib\\System.Data.Odbc.dll"; var asm = Assembly.LoadFrom(odbcPath);
var aQName = asm.DefinedTypes.Where(a =\> a.FullName.Equals("System.Data.Odbc.OdbcFactory", StringComparison.OrdinalIgnoreCase)).FirstOrDefault().AssemblyQualifiedName;
var factoryType = Type.GetType(aQName); var _DbProviderFactory = factoryType.InvokeMember("Instance", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null) as DbProviderFactory;
var con = _DbProviderFactory.CreateConnection(); [/code] С другим провайдером работает тот же код (например System.Data.SqlClient или Oracle.ManagedDataAccess.Core). С odbc я получаю ноль в InvokeMember «Экземпляр». Где я ошибаюсь?