Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Перехватить оракловский Exception?

19.02.20 11:19
Re: ​Перехватить оракловский Exception?
 
Murr_0001 местный житель
Murr_0001
в ответ AlexNek 18.02.20 19:32

И как можно грузить ДЛЛ-ки без врапперов?

-----

Как у билли:


// original from DbProviderFactories.cs
// modified to be debugged on place.
static public DbProviderFactory GetFactory(DataRow providerRow)
{
// fail with ConfigProviderMissing rather than ColumnNotInTheTable exception
DataColumn column = providerRow.Table.Columns["AssemblyQualifiedName"];
if (null != column)
{
// column value may not be a string
string assemblyQualifiedName = providerRow[column] as string;
if (!String.IsNullOrEmpty(assemblyQualifiedName))
{

// FXCop is concerned about the following line call to Get Type,
// If this code is deemed safe during our security review we should add this warning to our exclusion list.
// FXCop Message, pertaining to the call to GetType.
//
// Secure late-binding methods,System.Data.dll!System.Data.Common.DbProviderFactories.GetFactory(System.Data.DataRow):System.Data.Common.DbProviderFactory,
Type providerType = Type.GetType(assemblyQualifiedName);
if (null != providerType)
{

System.Reflection.FieldInfo providerInstance = providerType.GetField("Instance", System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
if (null != providerInstance)
{
//Debug.Assert(providerInstance.IsPublic, "field not public");
//Debug.Assert(providerInstance.IsStatic, "field not static");

if (providerInstance.FieldType.IsSubclassOf(typeof(DbProviderFactory)))
{

object factory = providerInstance.GetValue(null);
if (null != factory)
{
return (DbProviderFactory)factory;
}
// else throw ConfigProviderInvalid
}
// else throw ConfigProviderInvalid
}
throw new Exception("ConfigProviderInvalid");
}
throw new Exception("ConfigProviderNotInstalled");
}
// else throw ConfigProviderMissing
}
throw new Exception("ConfigProviderMissing");
}




Можно и оригинальный файлик посмотреть - тут Я для отладки "загрубил" проверки и ехцептионы на один язык.

Остальное - описывается в апп.конфиг.


что может быть еще проще интересно.

-----

Там вроде есть - вызов статического метода класса. Все переключения обработчиков - в нем. Ну не нужно мне таскать ссылки на обработчик по всему коду.

 

Перейти на